From 47ed1288389528236cd3b2b678a0423a2df21f66 Mon Sep 17 00:00:00 2001 From: Camm Maguire Date: Wed, 13 May 2026 12:16:53 +0000 Subject: [PATCH] [PATCH] TODO: Put a short summary on the line above and replace this paragraph with a longer explanation of this change. Complete the meta-information with other relevant fields (see below for details). To make it easier, the information below has been extracted from the changelog. Adjust it or drop it. Bug-Debian: https://bugs.debian.org/1105309 Gbp-Pq: Name Version_2_7_2pre18 --- Makefile.am | 28 ++-- Makefile.in | 337 +++++++++++---------------------------- bin/mac_arm_relink | 37 +++++ cmpnew/gcl_cmpcall.lsp | 2 +- cmpnew/gcl_cmpfun.lsp | 2 +- cmpnew/gcl_cmptag.lsp | 3 +- cmpnew/gcl_cmptype.lsp | 12 ++ configure | 89 ++++++++++- configure.ac | 36 ++++- git.tag | 2 +- h/aarch64-linux.h | 2 + h/aarch64-macosx.h | 157 ++++++++++++++++++ h/arm-linux.h | 2 + h/armhf-linux.h | 2 + h/disable_mac_aslr.h | 29 ++++ h/gclincl.h.in | 9 ++ h/lu.h | 2 +- h/mach64_aarch64_reloc.h | 57 +++++++ h/riscv64-linux.h | 2 + info/control.texi | 120 +++++++------- info/widgets.texi | 242 ++++++++++++++-------------- lsp/gcl_fpe.lsp | 42 +++-- lsp/gcl_iolib.lsp | 78 +++++---- o/alloc.c | 26 ++- o/cmpaux.c | 1 + o/file.d | 6 +- o/gbc.c | 6 + o/gprof.c | 8 + o/hash.d | 4 +- o/main.c | 138 +++++++++------- o/msbrk.c | 11 +- o/pre_qfv.c | 9 ++ o/run_process.c | 49 +++--- o/sfasli.c | 6 + o/sfaslmacho.c | 137 +++++++++++++--- o/sgbc.c | 5 + o/unexmacosx.c | 248 +++++++++++++++++++++++++--- o/unixsys.c | 6 +- o/usig.c | 12 ++ o/xdrfuns.c | 3 + pcl/gcl_pcl_dfun.lisp | 9 +- 41 files changed, 1346 insertions(+), 630 deletions(-) create mode 100644 bin/mac_arm_relink create mode 100644 h/aarch64-macosx.h create mode 100644 h/disable_mac_aslr.h create mode 100644 h/mach64_aarch64_reloc.h diff --git a/Makefile.am b/Makefile.am index 99dc1668..21d59c58 100644 --- a/Makefile.am +++ b/Makefile.am @@ -148,15 +148,17 @@ ARCHT_H=h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h h/elf32_arm_reloc.h h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h BUILT_H=h/new_decl.h o/boot.h h/cmpinclude.h -C_SRC=o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\ +C_SRC=o/typespec.c o/alloc.c o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\ o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\ o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\ o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\ o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\ o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c o/fat_string.c\ - o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\ - o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \ - o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c + o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\ + o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \ + o/user_init.c o/user_match.c o/mapfun.c +# o/bitop.c o/nfunlink.c o/clxsocket.c +# o/bcmp.c o/bcopy.c o/bzero.c D_SRC=o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\ o/read.d o/sequence.d o/string.d o/symbol.d @@ -255,13 +257,19 @@ unixport/saved_%: | unixport/raw_% unixport/gcl_cmpnopt_%.lsp \ ( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \ echo "(system:save-system \"../$@\")" | \ cat ../unixport/init_raw.lsp prof_init.lsp - | \ - GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \ + GCL_LSPSYSDIR=../$(srcdir)/unixport/ \ ../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/ && \ - rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue + rm -f ../unixport/gcl_cmpnopt.lsp rm -rf sb_$* unixport/raw_%: unixport/lib%.a $(FF) $(LF) $(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro + ! which otool >/dev/null || \ + ! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \ + ( echo Relinking raw image for mac arm && \ + $(CC) \ + $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \ + $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS)) unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\ unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp @@ -277,12 +285,13 @@ unixport/lib%.a: lib/libbase_gcl.a $(LIBGPROF) unixport/sys_%.o $(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \ unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o -.POSIX: # parallel job ordering E0=s typep nr deftype cmptype cmpinline cmpflet L0=c listlib seqlib type evalmacros E0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(E0))) M0_OBJS=$(filter-out $(E0_OBJS) $(L0_OBJS),$(L_OBJS)) L0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(L0))) +$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS)) +$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS)) unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS)) $(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\ @@ -320,6 +329,7 @@ unixport/pcl_gcl: | unixport/saved_mod_gcl unixport/ansi_gcl: | unixport/saved_pcl_gcl $(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | % echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|) + $(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | % ln -snf $$(basename $(word 2,$|)) $@ @@ -353,8 +363,8 @@ $(addprefix gcl0/,$(LL_OBJS)): gcl0/%.o : lsp/%.lsp $(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp gcl0/%.o: | unixport/gcl0 rm -f $(@D)/$*.done - $| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@ - [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \ + $(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@ + [ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \ ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link $(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp diff --git a/Makefile.in b/Makefile.in index 53614b4a..ab818890 100644 --- a/Makefile.in +++ b/Makefile.in @@ -176,29 +176,27 @@ lib_libbase_gcl_a_AR = $(AR) $(ARFLAGS) lib_libbase_gcl_a_RANLIB = $(RANLIB) lib_libbase_gcl_a_LIBADD = am__lib_libbase_gcl_a_SOURCES_DIST = o/typespec.c o/alloc.c o/gbc.c \ - o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \ - o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \ - o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \ - o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \ - o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \ - o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \ - o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \ - o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \ - o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \ - o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \ - o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \ - o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \ - o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \ - h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \ - h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \ - h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \ - h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \ - h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \ - h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \ - h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \ - o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \ - h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \ - h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \ + o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \ + o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \ + o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \ + o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \ + o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \ + o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \ + o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \ + o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \ + o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \ + o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \ + o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \ + o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \ + h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \ + h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \ + h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \ + h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \ + h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \ + h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \ + h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \ + h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \ + o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \ h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \ h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \ h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \ @@ -226,9 +224,9 @@ am__lib_libbase_gcl_a_SOURCES_DIST = o/typespec.c o/alloc.c o/gbc.c \ h/solaris-i386.h o/boot.c am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = o/typespec.$(OBJEXT) o/alloc.$(OBJEXT) o/gbc.$(OBJEXT) \ - o/bitop.$(OBJEXT) o/main.$(OBJEXT) o/eval.$(OBJEXT) \ - o/macros.$(OBJEXT) o/lex.$(OBJEXT) o/bds.$(OBJEXT) \ - o/frame.$(OBJEXT) o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \ + o/main.$(OBJEXT) o/eval.$(OBJEXT) o/macros.$(OBJEXT) \ + o/lex.$(OBJEXT) o/bds.$(OBJEXT) o/frame.$(OBJEXT) \ + o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \ o/assignment.$(OBJEXT) o/bind.$(OBJEXT) o/let.$(OBJEXT) \ o/conditional.$(OBJEXT) o/block.$(OBJEXT) \ o/iteration.$(OBJEXT) o/prog.$(OBJEXT) o/multival.$(OBJEXT) \ @@ -242,12 +240,11 @@ am__objects_1 = o/typespec.$(OBJEXT) o/alloc.$(OBJEXT) o/gbc.$(OBJEXT) \ o/unixfasl.$(OBJEXT) o/error.$(OBJEXT) o/unixtime.$(OBJEXT) \ o/unixsys.$(OBJEXT) o/unixsave.$(OBJEXT) o/funlink.$(OBJEXT) \ o/fat_string.$(OBJEXT) o/run_process.$(OBJEXT) \ - o/nfunlink.$(OBJEXT) o/usig.$(OBJEXT) o/usig2.$(OBJEXT) \ - o/utils.$(OBJEXT) o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \ - o/gmp_wrappers.$(OBJEXT) o/clxsocket.$(OBJEXT) \ - o/nsocket.$(OBJEXT) o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) \ - o/msbrk.$(OBJEXT) o/bcmp.$(OBJEXT) o/bcopy.$(OBJEXT) \ - o/bzero.$(OBJEXT) o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \ + o/usig.$(OBJEXT) o/usig2.$(OBJEXT) o/utils.$(OBJEXT) \ + o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \ + o/gmp_wrappers.$(OBJEXT) o/nsocket.$(OBJEXT) \ + o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) o/msbrk.$(OBJEXT) \ + o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \ o/mapfun.$(OBJEXT) am__objects_2 = @AMM_LIBBOOT_FALSE@am__objects_3 = o/boot.$(OBJEXT) @@ -265,29 +262,27 @@ lib_libbase_gcl_gprof_a_AR = $(AR) $(ARFLAGS) lib_libbase_gcl_gprof_a_RANLIB = $(RANLIB) lib_libbase_gcl_gprof_a_LIBADD = am__lib_libbase_gcl_gprof_a_SOURCES_DIST = o/typespec.c o/alloc.c \ - o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \ - o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \ - o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \ - o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \ - o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \ - o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \ - o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \ - o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \ - o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \ - o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \ - o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \ - o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \ - o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \ - h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \ - h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \ - h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \ - h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \ - h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \ - h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \ - h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \ - o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \ - h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \ - h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \ + o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \ + o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \ + o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \ + o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \ + o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \ + o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \ + o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \ + o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \ + o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \ + o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \ + o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \ + o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \ + h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \ + h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \ + h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \ + h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \ + h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \ + h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \ + h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \ + h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \ + o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \ h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \ h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \ h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \ @@ -316,7 +311,6 @@ am__lib_libbase_gcl_gprof_a_SOURCES_DIST = o/typespec.c o/alloc.c \ am__objects_5 = o/lib_libbase_gcl_gprof_a-typespec.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-alloc.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-main.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-macros.$(OBJEXT) \ @@ -361,21 +355,16 @@ am__objects_5 = o/lib_libbase_gcl_gprof_a-typespec.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-funlink.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-fat_string.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-utils.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-makefun.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-sockets.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-sfasl.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT) \ - o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT) \ o/lib_libbase_gcl_gprof_a-mapfun.$(OBJEXT) @@ -499,13 +488,12 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.Po \ gcl-tk/$(DEPDIR)/gcltkaux-tkAppInit.Po \ gcl-tk/$(DEPDIR)/gcltkaux-tkMain.Po o/$(DEPDIR)/alloc.Po \ o/$(DEPDIR)/array.Po o/$(DEPDIR)/assignment.Po \ - o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bcmp.Po o/$(DEPDIR)/bcopy.Po \ - o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po o/$(DEPDIR)/bind.Po \ - o/$(DEPDIR)/bitop.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \ - o/$(DEPDIR)/bzero.Po o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \ - o/$(DEPDIR)/character.Po o/$(DEPDIR)/clxsocket.Po \ - o/$(DEPDIR)/cmpaux.Po o/$(DEPDIR)/conditional.Po \ - o/$(DEPDIR)/earith.Po o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \ + o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po \ + o/$(DEPDIR)/bind.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \ + o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \ + o/$(DEPDIR)/character.Po o/$(DEPDIR)/cmpaux.Po \ + o/$(DEPDIR)/conditional.Po o/$(DEPDIR)/earith.Po \ + o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \ o/$(DEPDIR)/fat_string.Po o/$(DEPDIR)/file.Po \ o/$(DEPDIR)/format.Po o/$(DEPDIR)/frame.Po \ o/$(DEPDIR)/funlink.Po o/$(DEPDIR)/gbc.Po \ @@ -516,19 +504,14 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po \ @@ -555,7 +538,6 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po \ - o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po \ o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po \ @@ -598,25 +580,25 @@ am__depfiles_remade = bin/$(DEPDIR)/dpp.Po \ o/$(DEPDIR)/macros.Po o/$(DEPDIR)/main.Po \ o/$(DEPDIR)/makefun.Po o/$(DEPDIR)/mapfun.Po \ o/$(DEPDIR)/msbrk.Po o/$(DEPDIR)/multival.Po \ - o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nfunlink.Po \ - o/$(DEPDIR)/nsocket.Po o/$(DEPDIR)/num_arith.Po \ - o/$(DEPDIR)/num_co.Po o/$(DEPDIR)/num_comp.Po \ - o/$(DEPDIR)/num_log.Po o/$(DEPDIR)/num_pred.Po \ - o/$(DEPDIR)/num_rand.Po o/$(DEPDIR)/num_sfun.Po \ - o/$(DEPDIR)/number.Po o/$(DEPDIR)/package.Po \ - o/$(DEPDIR)/pathname.Po o/$(DEPDIR)/predicate.Po \ - o/$(DEPDIR)/prelink.Po o/$(DEPDIR)/print.Po \ - o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po o/$(DEPDIR)/read.Po \ - o/$(DEPDIR)/reference.Po o/$(DEPDIR)/regexpr.Po \ - o/$(DEPDIR)/run_process.Po o/$(DEPDIR)/sequence.Po \ - o/$(DEPDIR)/sfasl.Po o/$(DEPDIR)/sockets.Po \ - o/$(DEPDIR)/string.Po o/$(DEPDIR)/structure.Po \ - o/$(DEPDIR)/symbol.Po o/$(DEPDIR)/toplevel.Po \ - o/$(DEPDIR)/typespec.Po o/$(DEPDIR)/unixfasl.Po \ - o/$(DEPDIR)/unixfsys.Po o/$(DEPDIR)/unixsave.Po \ - o/$(DEPDIR)/unixsys.Po o/$(DEPDIR)/unixtime.Po \ - o/$(DEPDIR)/user_init.Po o/$(DEPDIR)/user_match.Po \ - o/$(DEPDIR)/usig.Po o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \ + o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nsocket.Po \ + o/$(DEPDIR)/num_arith.Po o/$(DEPDIR)/num_co.Po \ + o/$(DEPDIR)/num_comp.Po o/$(DEPDIR)/num_log.Po \ + o/$(DEPDIR)/num_pred.Po o/$(DEPDIR)/num_rand.Po \ + o/$(DEPDIR)/num_sfun.Po o/$(DEPDIR)/number.Po \ + o/$(DEPDIR)/package.Po o/$(DEPDIR)/pathname.Po \ + o/$(DEPDIR)/predicate.Po o/$(DEPDIR)/prelink.Po \ + o/$(DEPDIR)/print.Po o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po \ + o/$(DEPDIR)/read.Po o/$(DEPDIR)/reference.Po \ + o/$(DEPDIR)/regexpr.Po o/$(DEPDIR)/run_process.Po \ + o/$(DEPDIR)/sequence.Po o/$(DEPDIR)/sfasl.Po \ + o/$(DEPDIR)/sockets.Po o/$(DEPDIR)/string.Po \ + o/$(DEPDIR)/structure.Po o/$(DEPDIR)/symbol.Po \ + o/$(DEPDIR)/toplevel.Po o/$(DEPDIR)/typespec.Po \ + o/$(DEPDIR)/unixfasl.Po o/$(DEPDIR)/unixfsys.Po \ + o/$(DEPDIR)/unixsave.Po o/$(DEPDIR)/unixsys.Po \ + o/$(DEPDIR)/unixtime.Po o/$(DEPDIR)/user_init.Po \ + o/$(DEPDIR)/user_match.Po o/$(DEPDIR)/usig.Po \ + o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \ xgcl-2/$(DEPDIR)/Events.Po xgcl-2/$(DEPDIR)/XStruct-2.Po \ xgcl-2/$(DEPDIR)/XStruct-4.Po xgcl-2/$(DEPDIR)/Xutil-2.Po \ xgcl-2/$(DEPDIR)/general-c.Po \ @@ -872,6 +854,7 @@ PRELINK_CHECK = @PRELINK_CHECK@ RANLIB = @RANLIB@ RL_LIB = @RL_LIB@ RL_OBJS = @RL_OBJS@ +SEGMENT_ALIGNMENT_BITS = @SEGMENT_ALIGNMENT_BITS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -879,6 +862,7 @@ TCLSH = @TCLSH@ TCL_INCLUDE = @TCL_INCLUDE@ TCL_LIBRARY = @TCL_LIBRARY@ TCL_LIB_SPEC = @TCL_LIB_SPEC@ +TEXT_BASE = @TEXT_BASE@ TK_CONFIG_PREFIX = @TK_CONFIG_PREFIX@ TK_INCLUDE = @TK_INCLUDE@ TK_LIBRARY = @TK_LIBRARY@ @@ -1057,16 +1041,18 @@ ARCHT_H = h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h h/elf32_arm_reloc. h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h BUILT_H = h/new_decl.h o/boot.h h/cmpinclude.h -C_SRC = o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\ +C_SRC = o/typespec.c o/alloc.c o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\ o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\ o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\ o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\ o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\ o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c o/fat_string.c\ - o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\ - o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \ - o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c + o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\ + o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \ + o/user_init.c o/user_match.c o/mapfun.c +# o/bitop.c o/nfunlink.c o/clxsocket.c +# o/bcmp.c o/bcopy.c o/bzero.c D_SRC = o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\ o/read.d o/sequence.d o/string.d o/symbol.d @@ -1339,7 +1325,6 @@ o/$(DEPDIR)/$(am__dirstamp): o/typespec.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/alloc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/gbc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) -o/bitop.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/main.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/eval.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/macros.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) @@ -1384,7 +1369,6 @@ o/unixsave.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/funlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/fat_string.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/run_process.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) -o/nfunlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/usig.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/usig2.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/utils.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) @@ -1392,14 +1376,10 @@ o/makefun.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/sockets.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) -o/clxsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/nsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/prelink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/sfasl.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/msbrk.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) -o/bcmp.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) -o/bcopy.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) -o/bzero.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/user_init.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/user_match.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) o/mapfun.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp) @@ -1433,8 +1413,6 @@ o/lib_libbase_gcl_gprof_a-alloc.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-main.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT): o/$(am__dirstamp) \ @@ -1523,8 +1501,6 @@ o/lib_libbase_gcl_gprof_a-fat_string.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT): o/$(am__dirstamp) \ @@ -1537,8 +1513,6 @@ o/lib_libbase_gcl_gprof_a-sockets.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT): o/$(am__dirstamp) \ @@ -1547,12 +1521,6 @@ o/lib_libbase_gcl_gprof_a-sfasl.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) -o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT): o/$(am__dirstamp) \ - o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT): o/$(am__dirstamp) \ o/$(DEPDIR)/$(am__dirstamp) o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT): o/$(am__dirstamp) \ @@ -1763,19 +1731,14 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/array.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/assignment.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/backq.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcopy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bds.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/big.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bind.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bitop.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/block.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/boot.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bzero.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/catch.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cfun.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/character.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/clxsocket.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cmpaux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/conditional.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/earith.Po@am__quote@ # am--include-marker @@ -1798,19 +1761,14 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po@am__quote@ # am--include-marker @@ -1837,7 +1795,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po@am__quote@ # am--include-marker @@ -1885,7 +1842,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/msbrk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/multival.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/new_init.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nfunlink.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nsocket.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_arith.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_co.Po@am__quote@ # am--include-marker @@ -1999,20 +1955,6 @@ o/lib_libbase_gcl_gprof_a-gbc.obj: o/gbc.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gbc.obj `if test -f 'o/gbc.c'; then $(CYGPATH_W) 'o/gbc.c'; else $(CYGPATH_W) '$(srcdir)/o/gbc.c'; fi` -o/lib_libbase_gcl_gprof_a-bitop.o: o/bitop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c - -o/lib_libbase_gcl_gprof_a-bitop.obj: o/bitop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi` - o/lib_libbase_gcl_gprof_a-main.o: o/main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-main.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo -c -o o/lib_libbase_gcl_gprof_a-main.o `test -f 'o/main.c' || echo '$(srcdir)/'`o/main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Po @@ -2629,20 +2571,6 @@ o/lib_libbase_gcl_gprof_a-run_process.obj: o/run_process.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-run_process.obj `if test -f 'o/run_process.c'; then $(CYGPATH_W) 'o/run_process.c'; else $(CYGPATH_W) '$(srcdir)/o/run_process.c'; fi` -o/lib_libbase_gcl_gprof_a-nfunlink.o: o/nfunlink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c - -o/lib_libbase_gcl_gprof_a-nfunlink.obj: o/nfunlink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi` - o/lib_libbase_gcl_gprof_a-usig.o: o/usig.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-usig.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo -c -o o/lib_libbase_gcl_gprof_a-usig.o `test -f 'o/usig.c' || echo '$(srcdir)/'`o/usig.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Po @@ -2727,20 +2655,6 @@ o/lib_libbase_gcl_gprof_a-gmp_wrappers.obj: o/gmp_wrappers.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gmp_wrappers.obj `if test -f 'o/gmp_wrappers.c'; then $(CYGPATH_W) 'o/gmp_wrappers.c'; else $(CYGPATH_W) '$(srcdir)/o/gmp_wrappers.c'; fi` -o/lib_libbase_gcl_gprof_a-clxsocket.o: o/clxsocket.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c - -o/lib_libbase_gcl_gprof_a-clxsocket.obj: o/clxsocket.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi` - o/lib_libbase_gcl_gprof_a-nsocket.o: o/nsocket.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-nsocket.o `test -f 'o/nsocket.c' || echo '$(srcdir)/'`o/nsocket.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po @@ -2797,48 +2711,6 @@ o/lib_libbase_gcl_gprof_a-msbrk.obj: o/msbrk.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-msbrk.obj `if test -f 'o/msbrk.c'; then $(CYGPATH_W) 'o/msbrk.c'; else $(CYGPATH_W) '$(srcdir)/o/msbrk.c'; fi` -o/lib_libbase_gcl_gprof_a-bcmp.o: o/bcmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c - -o/lib_libbase_gcl_gprof_a-bcmp.obj: o/bcmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi` - -o/lib_libbase_gcl_gprof_a-bcopy.o: o/bcopy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c - -o/lib_libbase_gcl_gprof_a-bcopy.obj: o/bcopy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi` - -o/lib_libbase_gcl_gprof_a-bzero.o: o/bzero.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c - -o/lib_libbase_gcl_gprof_a-bzero.obj: o/bzero.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi` - o/lib_libbase_gcl_gprof_a-user_init.o: o/user_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-user_init.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo -c -o o/lib_libbase_gcl_gprof_a-user_init.o `test -f 'o/user_init.c' || echo '$(srcdir)/'`o/user_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Po @@ -4122,19 +3994,14 @@ distclean: distclean-am -rm -f o/$(DEPDIR)/array.Po -rm -f o/$(DEPDIR)/assignment.Po -rm -f o/$(DEPDIR)/backq.Po - -rm -f o/$(DEPDIR)/bcmp.Po - -rm -f o/$(DEPDIR)/bcopy.Po -rm -f o/$(DEPDIR)/bds.Po -rm -f o/$(DEPDIR)/big.Po -rm -f o/$(DEPDIR)/bind.Po - -rm -f o/$(DEPDIR)/bitop.Po -rm -f o/$(DEPDIR)/block.Po -rm -f o/$(DEPDIR)/boot.Po - -rm -f o/$(DEPDIR)/bzero.Po -rm -f o/$(DEPDIR)/catch.Po -rm -f o/$(DEPDIR)/cfun.Po -rm -f o/$(DEPDIR)/character.Po - -rm -f o/$(DEPDIR)/clxsocket.Po -rm -f o/$(DEPDIR)/cmpaux.Po -rm -f o/$(DEPDIR)/conditional.Po -rm -f o/$(DEPDIR)/earith.Po @@ -4157,19 +4024,14 @@ distclean: distclean-am -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po @@ -4196,7 +4058,6 @@ distclean: distclean-am -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po @@ -4244,7 +4105,6 @@ distclean: distclean-am -rm -f o/$(DEPDIR)/msbrk.Po -rm -f o/$(DEPDIR)/multival.Po -rm -f o/$(DEPDIR)/new_init.Po - -rm -f o/$(DEPDIR)/nfunlink.Po -rm -f o/$(DEPDIR)/nsocket.Po -rm -f o/$(DEPDIR)/num_arith.Po -rm -f o/$(DEPDIR)/num_co.Po @@ -4446,19 +4306,14 @@ maintainer-clean: maintainer-clean-am -rm -f o/$(DEPDIR)/array.Po -rm -f o/$(DEPDIR)/assignment.Po -rm -f o/$(DEPDIR)/backq.Po - -rm -f o/$(DEPDIR)/bcmp.Po - -rm -f o/$(DEPDIR)/bcopy.Po -rm -f o/$(DEPDIR)/bds.Po -rm -f o/$(DEPDIR)/big.Po -rm -f o/$(DEPDIR)/bind.Po - -rm -f o/$(DEPDIR)/bitop.Po -rm -f o/$(DEPDIR)/block.Po -rm -f o/$(DEPDIR)/boot.Po - -rm -f o/$(DEPDIR)/bzero.Po -rm -f o/$(DEPDIR)/catch.Po -rm -f o/$(DEPDIR)/cfun.Po -rm -f o/$(DEPDIR)/character.Po - -rm -f o/$(DEPDIR)/clxsocket.Po -rm -f o/$(DEPDIR)/cmpaux.Po -rm -f o/$(DEPDIR)/conditional.Po -rm -f o/$(DEPDIR)/earith.Po @@ -4481,19 +4336,14 @@ maintainer-clean: maintainer-clean-am -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po @@ -4520,7 +4370,6 @@ maintainer-clean: maintainer-clean-am -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po - -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po @@ -4568,7 +4417,6 @@ maintainer-clean: maintainer-clean-am -rm -f o/$(DEPDIR)/msbrk.Po -rm -f o/$(DEPDIR)/multival.Po -rm -f o/$(DEPDIR)/new_init.Po - -rm -f o/$(DEPDIR)/nfunlink.Po -rm -f o/$(DEPDIR)/nsocket.Po -rm -f o/$(DEPDIR)/num_arith.Po -rm -f o/$(DEPDIR)/num_co.Po @@ -4716,13 +4564,19 @@ unixport/saved_%: | unixport/raw_% unixport/gcl_cmpnopt_%.lsp \ ( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \ echo "(system:save-system \"../$@\")" | \ cat ../unixport/init_raw.lsp prof_init.lsp - | \ - GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \ + GCL_LSPSYSDIR=../$(srcdir)/unixport/ \ ../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/ && \ - rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue + rm -f ../unixport/gcl_cmpnopt.lsp rm -rf sb_$* unixport/raw_%: unixport/lib%.a $(FF) $(LF) $(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro + ! which otool >/dev/null || \ + ! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \ + ( echo Relinking raw image for mac arm && \ + $(CC) \ + $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \ + $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS)) unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\ unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp @@ -4737,8 +4591,8 @@ $(addprefix unixport/lib,$(addsuffix .a,pre_gcl $(MY_DIRS))): \ unixport/lib%.a: lib/libbase_gcl.a $(LIBGPROF) unixport/sys_%.o $(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \ unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o - -.POSIX: # parallel job ordering +$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS)) +$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS)) unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS)) $(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\ @@ -4776,6 +4630,7 @@ unixport/pcl_gcl: | unixport/saved_mod_gcl unixport/ansi_gcl: | unixport/saved_pcl_gcl $(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | % echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|) + $(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | % ln -snf $$(basename $(word 2,$|)) $@ @@ -4809,8 +4664,8 @@ $(addprefix gcl0/,$(LL_OBJS)): gcl0/%.o : lsp/%.lsp $(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp gcl0/%.o: | unixport/gcl0 rm -f $(@D)/$*.done - $| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@ - [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \ + $(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@ + [ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \ ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link $(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp diff --git a/bin/mac_arm_relink b/bin/mac_arm_relink new file mode 100644 index 00000000..e3be6012 --- /dev/null +++ b/bin/mac_arm_relink @@ -0,0 +1,37 @@ +#!/usr/bin/awk -f + +function from_hex (hh) { + jj=0; + if (substr(hh,1,2)=="0x") + hh=substr(hh,3,length(hh)); + for (ii=1;ii<=length(hh);ii++) + jj=jj*16+A[substr(hh,ii,1)]; + return jj; +} +function to_hex(jj) { + ss=""; + for (;jj;jj=kk) { + kk=int(jj/16); + ss=substr(z,jj-kk*16+1,1) ss; + } + return ss; +} + + +BEGIN{z="0123456789abcdef";for (i=1;i<=length(z);i++) A[substr(z,i,1)]=i-1;} +/^ *cmd / {c=$2;next} +/^ *segname/ {n=$2;next} +/^ *vmsize/ {if (c=="LC_SEGMENT_64") A[n]=$2;} +END { + p=1; + for (i=0;ifun.fun_argd && _n>=_f->fun.fun_minarg && diff --git a/cmpnew/gcl_cmpfun.lsp b/cmpnew/gcl_cmpfun.lsp index 8f802f76..0d86c6a0 100644 --- a/cmpnew/gcl_cmpfun.lsp +++ b/cmpnew/gcl_cmpfun.lsp @@ -132,7 +132,7 @@ (ms "({fixnum _v=(fixnum)#v;object _z,_f=(#0),_l=(#1),_ll=_l; object _x4=Cnil,_x3=Cnil,_x2=Cnil,_x1=Cnil,_x0=Cnil; - char _m=(#n-2),_n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1); + char _m=(#n-2);volatile char _n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1); char _reg=_f->fun.fun_minarg==_f->fun.fun_maxarg; fcall.fun=_f;fcall.valp=_v;fcall.argd=-(#n-1); switch (_n) { diff --git a/cmpnew/gcl_cmptag.lsp b/cmpnew/gcl_cmptag.lsp index ba6ef9aa..9228936d 100644 --- a/cmpnew/gcl_cmptag.lsp +++ b/cmpnew/gcl_cmptag.lsp @@ -62,7 +62,8 @@ (unless (tag-p form) (mapc (lambda (x) (when (var-p x) - (incf (var-register x) (the fixnum *reg-amount*)))) + (unless (>= (var-register x) (ash (the fixnum *reg-amount*) 2)) + (incf (var-register x) (the fixnum *reg-amount*))))) (info-ref (cadr form))))) (defun intersection-p (l1 l2) diff --git a/cmpnew/gcl_cmptype.lsp b/cmpnew/gcl_cmptype.lsp index 2190dde1..b489f6a0 100644 --- a/cmpnew/gcl_cmptype.lsp +++ b/cmpnew/gcl_cmptype.lsp @@ -502,6 +502,18 @@ (defun range-decomp (tp) (mapcan (lambda (x &aux (f (pop x))(z (type-and tp x))) (when z (list (cons f z)))) +cmp-range-types+)) +(defun allocate-basic-stream-propagator (f tp) + (declare (ignore f)) + (reduce + (lambda (y x) + (if (type-and (car x) tp) + (type-or1 (cadr x) y) + y)) + '#.(mapcar (lambda (x) (list (object-tp x) (cmp-norm-tp (type-of (allocate-basic-stream x))))) + (let ((i -1)) + (mapl (lambda (x) (setf (car x) (incf i))) (make-list (si::btp-count #tstream))))) + :initial-value nil)) +(si::putprop 'allocate-basic-stream 'allocate-basic-stream-propagator 'type-propagator) (dolist (l '(si::number-plus si::number-minus si::number-times + - * exp tanh sinh asinh)) (si::putprop l 'super-range 'type-propagator)) diff --git a/configure b/configure index c7376950..37ffbdff 100755 --- a/configure +++ b/configure @@ -699,6 +699,8 @@ GMP HAVE_MALLOC_ZONE_MEMALIGN AMM_GPROF_FALSE AMM_GPROF_TRUE +SEGMENT_ALIGNMENT_BITS +TEXT_BASE GCL_CC CPP RANLIB @@ -827,6 +829,11 @@ enable_debug enable_static enable_pic enable_dependency_tracking +enable_text_base +enable_segment_alignment_bits +enable_initial_heap_vmsize +enable_saved_pre_image_span +enable_saved_image_span enable_gprof with_x enable_xdr @@ -1483,7 +1490,7 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") -put bootstrap code in shared library to be discarded + --enable-libtool will put bootstrap code in shared library to be discarded --enable-machine=XXXX will force the use of one of the definitions in h/XXXX.defs --enable-widecons will use a three word cons with simplified typing --enable-safecdr will protect cdr from immfix and speed up type processing @@ -1493,7 +1500,7 @@ put bootstrap code in shared library to be discarded --enable-bdssize=XXXX will compile in a binding stack of size XXX --enable-ihssize=XXXX will compile in a invocation history stack of size XXX --enable-frssize=XXXX will compile in a frame stack of size XXX ---enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info + --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info --enable-xgcl=yes will compile in support for XGCL --enable-debug builds gcl with -g in CFLAGS to enable running under gdb --enable-static will link your GCL against static as opposed to shared system libraries @@ -1502,11 +1509,16 @@ put bootstrap code in shared library to be discarded do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build + --enable-text_base=0x.... set base address for __TEXT + --enable-segment_alignment_bits=... set bit alignment for mach-o image segments + --enable-initial_heap_vmsize=0x.... set heap size for raw images + --enable-saved_pre_image_span=0x.... set address span for saved pre images + --enable-saved_image_span=0x.... set address span for saved images --enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof --enable-xdr=yes will compile in support for XDR --enable-immfix will enable an immediate fixnum table above the C stack --enable-fastimmfix=XXXX will reject low immediate fixnums unless 2^XXX can be attained - --enable-min_pagewidth=xxx sets 1<&1 | fgrep ming > /dev/null ; @@ -7272,7 +7285,7 @@ case $use in 386-macosx) # assert_arg_to_cflags -Wno-error=implicit-function-declaration add_arg_to_cflags -Wno-incomplete-setjmp-declaration - assert_arg_to_ldflags -Wl,-no_pie + assert_arg_to_ldflags -Wl,-no_pie #FIXME remove if test "$build_cpu" = "x86_64" ; then assert_arg_to_cflags -m64 assert_arg_to_ldflags -m64 @@ -7282,9 +7295,76 @@ case $use in assert_arg_to_ldflags -m32 assert_arg_to_ldflags -Wl,-headerpad,56 fi;; + aarch64-macosx) +# LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines + # Check whether --enable-text_base was given. +if test ${enable_text_base+y} +then : + enableval=$enable_text_base; TEXT_BASE=$enableval +else case e in #( + e) TEXT_BASE=0x10000000000 ;; +esac +fi + + + # Check whether --enable-segment_alignment_bits was given. +if test ${enable_segment_alignment_bits+y} +then : + enableval=$enable_segment_alignment_bits; SEGMENT_ALIGNMENT_BITS=$enableval +else case e in #( + e) SEGMENT_ALIGNMENT_BITS=14 ;; +esac +fi + + + ;; FreeBSD) assert_arg_to_ldflags -Z;; esac +case $use in + *macosx*) + # Check whether --enable-initial_heap_vmsize was given. +if test ${enable_initial_heap_vmsize+y} +then : + enableval=$enable_initial_heap_vmsize; INITIAL_HEAP_VMSIZE=$enableval +else case e in #( + e) INITIAL_HEAP_VMSIZE=0x70000000 ;; +esac +fi + + +printf "%s\n" "#define INITIAL_HEAP_VMSIZE $INITIAL_HEAP_VMSIZE" >>confdefs.h + + + #Support libboot option + # Check whether --enable-saved_pre_image_span was given. +if test ${enable_saved_pre_image_span+y} +then : + enableval=$enable_saved_pre_image_span; SAVED_PRE_IMAGE_SPAN=$enableval +else case e in #( + e) SAVED_PRE_IMAGE_SPAN=0x100000000 ;; +esac +fi + + +printf "%s\n" "#define SAVED_PRE_IMAGE_SPAN $SAVED_PRE_IMAGE_SPAN" >>confdefs.h + + + # Check whether --enable-saved_image_span was given. +if test ${enable_saved_image_span+y} +then : + enableval=$enable_saved_image_span; SAVED_IMAGE_SPAN=$enableval +else case e in #( + e) SAVED_IMAGE_SPAN=0x2000000000 ;; +esac +fi + + +printf "%s\n" "#define SAVED_IMAGE_SPAN $SAVED_IMAGE_SPAN" >>confdefs.h + + ;; +esac + if test "$enable_static" = "yes" ; then assert_arg_to_ldflags -static assert_arg_to_ldflags -Wl,-zmuldefs @@ -11829,6 +11909,7 @@ LI_GITTAG="$GIT_TAG" LI_RELEASE="$RELEASE" +#LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS $LISP_CFLAGS" | sed 's,-pg\b,,g'`\"" LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS" | sed 's,-pg\b,,g'`\"" LI_DFP="\"$GPL_FLAG\"" diff --git a/configure.ac b/configure.ac index ddf14257..eee96c6f 100644 --- a/configure.ac +++ b/configure.ac @@ -60,6 +60,7 @@ case $canonical in powerpc*linux*) use=powerpc-linux;; powerpc-*-darwin*) use=powerpc-macosx;; *86*darwin*) use=386-macosx;; + *aarch64*darwin*) use=aarch64-macosx;; i*mingw*|i*msys*) use=mingw;; *cygwin*) if $CC -v 2>&1 | fgrep ming > /dev/null ; @@ -71,7 +72,7 @@ case $canonical in i?86-pc-solaris*) use=solaris-i386;; esac -AC_ARG_ENABLE([libboot],[put bootstrap code in shared library to be discarded], +AC_ARG_ENABLE([libboot],[ --enable-libtool will put bootstrap code in shared library to be discarded], [libboot=$enableval],[libboot="yes"]) if test "$use" = "gnuwin95" ; then @@ -132,7 +133,7 @@ AC_ARG_ENABLE([ihssize],[ --enable-ihssize=XXXX will compile in a invocation hi AC_ARG_ENABLE([frssize],[ --enable-frssize=XXXX will compile in a frame stack of size XXX], [AC_DEFINE_UNQUOTED(FRSSIZE,$enableval,[frame stack size])]) -AC_ARG_ENABLE([infodir],[--enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info], +AC_ARG_ENABLE([infodir],[ --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info], [INFO_DIR=$enableval],[INFO_DIR=$prefix/share/info]) INFO_DIR=`eval echo $INFO_DIR/` @@ -329,7 +330,7 @@ case $use in 386-macosx) # assert_arg_to_cflags -Wno-error=implicit-function-declaration add_arg_to_cflags -Wno-incomplete-setjmp-declaration - assert_arg_to_ldflags -Wl,-no_pie + assert_arg_to_ldflags -Wl,-no_pie #FIXME remove if test "$build_cpu" = "x86_64" ; then assert_arg_to_cflags -m64 assert_arg_to_ldflags -m64 @@ -339,9 +340,35 @@ case $use in assert_arg_to_ldflags -m32 assert_arg_to_ldflags -Wl,-headerpad,56 fi;; + aarch64-macosx) +# LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines + AC_ARG_ENABLE([text_base],[ --enable-text_base=0x.... set base address for __TEXT], + [TEXT_BASE=$enableval],[TEXT_BASE=0x10000000000]) + AC_SUBST(TEXT_BASE) + AC_ARG_ENABLE([segment_alignment_bits],[ --enable-segment_alignment_bits=... set bit alignment for mach-o image segments], + [SEGMENT_ALIGNMENT_BITS=$enableval],[SEGMENT_ALIGNMENT_BITS=14]) + AC_SUBST(SEGMENT_ALIGNMENT_BITS) + ;; FreeBSD) assert_arg_to_ldflags -Z;; esac +case $use in + *macosx*) + AC_ARG_ENABLE([initial_heap_vmsize],[ --enable-initial_heap_vmsize=0x.... set heap size for raw images], + [INITIAL_HEAP_VMSIZE=$enableval],[INITIAL_HEAP_VMSIZE=0x70000000]) + AC_DEFINE_UNQUOTED(INITIAL_HEAP_VMSIZE,$INITIAL_HEAP_VMSIZE,[heap size for raw images]) + + #Support libboot option + AC_ARG_ENABLE([saved_pre_image_span],[ --enable-saved_pre_image_span=0x.... set address span for saved pre images], + [SAVED_PRE_IMAGE_SPAN=$enableval],[SAVED_PRE_IMAGE_SPAN=0x100000000]) + AC_DEFINE_UNQUOTED(SAVED_PRE_IMAGE_SPAN,$SAVED_PRE_IMAGE_SPAN,[address span for saved pre images]) + + AC_ARG_ENABLE([saved_image_span],[ --enable-saved_image_span=0x.... set address span for saved images], + [SAVED_IMAGE_SPAN=$enableval],[SAVED_IMAGE_SPAN=0x2000000000]) + AC_DEFINE_UNQUOTED(SAVED_IMAGE_SPAN,$SAVED_IMAGE_SPAN,[address span for saved images]) + ;; +esac + if test "$enable_static" = "yes" ; then assert_arg_to_ldflags -static assert_arg_to_ldflags -Wl,-zmuldefs @@ -922,7 +949,7 @@ else AC_MSG_RESULT([not found]) fi -AC_ARG_ENABLE(min_pagewidth,[ --enable-min_pagewidth=xxx sets 1< +*/ + +/* For those who are using ACL2, please remember to enlarge your shell stack (ulimit -s 8192). */ + +#include "bsd.h" + +#define DARWIN + +/* Mac OS X has its own executable file format (Mach-O). */ +#undef HAVE_AOUT +#undef HAVE_ELF + + +/* Alternatively, we could use the global variable vm_page_size. */ +/* #define PAGEWIDTH 12 */ + + +#include /* to get sbrk defined */ + + +/** (si::save-system "...") a.k.a. unexec implementation */ + +/* The implementation of unexec for GCL is based on Andrew Choi's work for Emacs. + Previous pioneering implementation of unexec for Mac OS X by Steve Nygard. */ +#define UNIXSAVE "unexmacosx.c" + +#undef malloc +#define malloc my_malloc + +#undef free +#define free my_free + +#undef realloc +#define realloc my_realloc + +#undef valloc +#define valloc my_valloc + +#undef calloc +#define calloc my_calloc + + +/** Dynamic loading implementation */ + +/* The sfasl{bfd,macosx,macho}.c files are included from sfasl.c. */ +#ifdef HAVE_LIBBFD +#define SEPARATE_SFASL_FILE "sfaslbfd.c" +#else +#define SPECIAL_RSYM "rsym_macosx.c" +#define SEPARATE_SFASL_FILE "sfaslmacho.c" +#endif + +/* The file has non Mach-O stuff appended. We need to know where the Mach-O stuff ends. */ +#include +extern int seek_to_end_ofile (FILE *); +#define SEEK_TO_END_OFILE(fp) seek_to_end_ofile(fp) + +/** Stratified garbage collection implementation [ (si::sgc-on t) ] */ + +/* Mac OS X has sigaction (this is needed in o/usig.c) */ +#define HAVE_SIGACTION + +/* Copied from {Net,Free,Open}BSD.h */ +/* Modified according to Camm's instructions on April 15, 2004. */ +#define HAVE_SIGPROCMASK + +/* until the sgc/save problem can be fixed. 20050114 CM*/ +/* #define SGC */ + +#define MPROTECT_ACTION_FLAGS (SA_SIGINFO | SA_RESTART) + +#define INSTALL_MPROTECT_HANDLER \ +do { \ + static struct sigaction sact; \ + sigfillset (&(sact.sa_mask)); \ + sact.sa_flags = MPROTECT_ACTION_FLAGS; \ + sact.sa_sigaction = (void (*) ()) memprotect_handler; \ + sigaction (SIGBUS, &sact, 0); \ + sigaction (SIGSEGV, &sact, 0); \ +} while (0); + +#define GET_FAULT_ADDR(sig,code,sv,a) ((siginfo_t *)code)->si_addr + + +/** Misc stuff */ + +#define IEEEFLOAT + +/* Mac OS X does not have _fileno as in linux.h. Nor does it have _cnt as in bsd.h. + Let's see what we can do with this declaration found in {Net,Free,Open}BSD.h. */ +#undef LISTEN_FOR_INPUT +#define LISTEN_FOR_INPUT(fp) \ +do {int c=0; \ + if (((FILE *)fp)->_r <=0 && (c=0, ioctl(((FILE *)fp)->_file, FIONREAD, &c), c<=0)) \ + return(FALSE); \ +} while (0) + +#define GET_FULL_PATH_SELF(a_) \ +do { \ +uint32_t bufsize = 1024; \ +static char buf [1024]; \ +static char fub [1024]; \ +if (_NSGetExecutablePath (buf, &bufsize) != 0) { \ + error ("_NSGetExecutablePath failed"); \ +} \ +if (realpath (buf, fub) == 0) { \ + error ("realpath failed"); \ +} \ +(a_) = fub; \ +} while (0) + +#define C_GC_OFFSET 4 +#include +#define RELOC_H "mach64_aarch64_reloc.h" + +#define FPE_TCODE(x_) \ + ({ufixnum _x=(x_),_y=0; \ + switch(_x) { \ + case FPE_FLTINV: _y=FE_INVALID;break; \ + case FPE_FLTDIV: _y=FE_DIVBYZERO;break; \ + case FPE_FLTOVF: _y=FE_OVERFLOW;break; \ + case FPE_FLTUND: _y=FE_UNDERFLOW;break; \ + case FPE_FLTRES: _y=FE_INEXACT;break; \ + } \ + _y; \ + }) +#define SF(a_) ((siginfo_t *)a_) +#define FPE_CODE(i_,v_) make_fixnum(FPE_TCODE((fixnum)SF(i_)->si_code)) +#define FPE_ADDR(i_,v_) make_fixnum((fixnum)SF(i_)->si_addr) +#define FPE_CTXT(v_) Cnil + +#define FPE_INIT Cnil + +#include /*PATH_MAX MAXPATHLEN*/ +#undef MIN +#undef MAX + +#undef sbrk +#define sbrk msbrk +#define INITIALIZE_BRK msbrk_init(); + +#include +#define CLEAR_CACHE sys_icache_invalidate(memory->cfd.cfd_start,memory->cfd.cfd_size) + +#define W_X + +#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE") diff --git a/h/arm-linux.h b/h/arm-linux.h index fcec61be..94999dbc 100755 --- a/h/arm-linux.h +++ b/h/arm-linux.h @@ -8,3 +8,5 @@ #define NEED_STACK_CHK_GUARD #define OUTPUT_MACH bfd_mach_arm_9 + +#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE") diff --git a/h/armhf-linux.h b/h/armhf-linux.h index 48273229..90848b56 100644 --- a/h/armhf-linux.h +++ b/h/armhf-linux.h @@ -8,3 +8,5 @@ #define NEED_STACK_CHK_GUARD #define OUTPUT_MACH bfd_mach_arm_9 + +#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE") diff --git a/h/disable_mac_aslr.h b/h/disable_mac_aslr.h new file mode 100644 index 00000000..80820b6e --- /dev/null +++ b/h/disable_mac_aslr.h @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include + +#ifndef POSIX_SPAWN_DISABLE_ASLR +#define POSIX_SPAWN_DISABLE_ASLR 0x0100 +#endif + +void +disable_aslr(int argc, char **argv, char **envp) { + + pid_t pid; + posix_spawnattr_t attr; + + if (!_dyld_get_image_vmaddr_slide(0)) { + return; + } + + posix_spawnattr_init(&attr); + posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETEXEC | POSIX_SPAWN_DISABLE_ASLR); + if (posix_spawn(&pid, argv[0], NULL, &attr, argv, envp)) { + perror("posix_spawn to disable ASLR failed"); + gcl_abort(); + } + posix_spawnattr_destroy(&attr); + +} diff --git a/h/gclincl.h.in b/h/gclincl.h.in index 069435b8..54c44fb9 100644 --- a/h/gclincl.h.in +++ b/h/gclincl.h.in @@ -222,6 +222,9 @@ /* size of immediate fixnum address space */ #undef IM_FIX_LIM +/* heap size for raw images */ +#undef INITIAL_HEAP_VMSIZE + /* symbol name mangling convention */ #undef LEADING_UNDERSCORE @@ -297,6 +300,12 @@ /* rl_readline_name returns type const char */ #undef RL_READLINE_NAME_TYPE_CONST_CHAR +/* address span for saved images */ +#undef SAVED_IMAGE_SPAN + +/* address span for saved pre images */ +#undef SAVED_PRE_IMAGE_SPAN + /* The size of 'char', as computed by sizeof. */ #undef SIZEOF_CHAR diff --git a/h/lu.h b/h/lu.h index aec187fb..4e2c7cc0 100644 --- a/h/lu.h +++ b/h/lu.h @@ -504,7 +504,7 @@ struct function { struct cfdata { FRSTWRD(tt, - cfw:LM(18), + cfd_nexp:LM(18), cfd_prof:1 /* profiling */ ); diff --git a/h/mach64_aarch64_reloc.h b/h/mach64_aarch64_reloc.h new file mode 100644 index 00000000..15fb35da --- /dev/null +++ b/h/mach64_aarch64_reloc.h @@ -0,0 +1,57 @@ +#include + +#define GOT_RELOC(ri) \ + ri->r_type==ARM64_RELOC_GOT_LOAD_PAGE21|| \ + ri->r_type==ARM64_RELOC_GOT_LOAD_PAGEOFF12|| \ + ri->r_type==ARM64_RELOC_BRANCH26 +#define GOT_RELOC_EXTRA(ri) ri->r_type==ARM64_RELOC_BRANCH26 ? 2*sizeof(int)/sizeof(ul) : 0 + + case ARM64_RELOC_ADDEND: + addend=a; + break; + case ARM64_RELOC_BRANCH26: + addend=0; + if (labs(((long)(ri->r_pcrel ? a-(ul)q : a))/4)&(~MASK(25))) { + int tramp[]={0x58ffffd0, /*ldr 19bit pc relative x16*/ + 0xd61f0200};/*br x16*/ + got+=n1[ri->r_symbolnum].n_desc-1; + *got++=a; + memcpy(got,tramp,sizeof(tramp)); + a=(ul)got; + } + add_vals(q,MASK(26),((long)(ri->r_pcrel ? a-(ul)q : a))/4); + break; + case ARM64_RELOC_GOT_LOAD_PAGE21: + got+=n1[ri->r_symbolnum].n_desc-1; + *got=a; + a=(ul)got; + case ARM64_RELOC_PAGE21: + a+=addend; + addend=0; +#define PG(x) ((x) & ~0xfff) + a=((long)(PG(a)-PG((ul)q))) / 0x1000; +#undef PG + store_val(q,MASK(2) << 29, (a & 0x3) << 29); + store_val(q,MASK(19) << 5, (a & 0x1ffffc) << 3); + break; + case ARM64_RELOC_GOT_LOAD_PAGEOFF12: + got+=n1[ri->r_symbolnum].n_desc-1; + *got=a; + a=(ul)got; + case ARM64_RELOC_PAGEOFF12: + a+=addend; + addend=0; + a&=0xfff; + a>>=(((*q)>>29)&0x1)* /*not add/sub*/ + ((((*q)>>26)&0x1) ? /*simd*/ + ((((*q)>>22)&0x3) ? + (((*q)>>22)&0x3)+1 : (((*q)>>30)&0x1)) : + (((*q)>>30)&0x3)); /*gp*/ + store_val(q,MASK(12) << 10, a << 10); + break; + case ARM64_RELOC_UNSIGNED: + addend=0; + if (ri->r_extern || !ri->r_pcrel) { + add_valu(q,~0UL,ri->r_pcrel ? a-rel : a); + } + break; diff --git a/h/riscv64-linux.h b/h/riscv64-linux.h index 4344c5f0..3fe9384d 100644 --- a/h/riscv64-linux.h +++ b/h/riscv64-linux.h @@ -11,3 +11,5 @@ #define NEED_STACK_CHK_GUARD #define OUTPUT_MACH bfd_mach_riscv64 + +#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE") diff --git a/info/control.texi b/info/control.texi index 9713ff9e..c3ac9acc 100644 --- a/info/control.texi +++ b/info/control.texi @@ -260,7 +260,7 @@ Some of the substitutions are only valid for certain types of events; if they are used for other types of events the value substituted is undefined. -@table @asis{} +@table @asis @item @b{%%} Replaced with a single percent. @item @b{|%#|} @@ -515,7 +515,7 @@ tk-dialog \- Create modal dialog and wait for response This procedure is part of the Tk script library. Its arguments describe a dialog box: -@table @asis{} +@table @asis @item @i{window} Name of top-level window to use for dialog. Any existing window by this name is destroyed. @@ -602,7 +602,7 @@ the focus. The @b{focus} command can take any of the following forms: -@table @asis{} +@table @asis @item @b{focus} If invoked with no arguments, @b{focus} returns the path name of the current focus window, or @b{none} if there is no focus window. @@ -750,7 +750,7 @@ grab on a given display at once. The @b{grab} command can take any of the following forms: -@table @asis{} +@table @asis @item @b{grab }@r{?}@b{:global}@r{? }@i{window} Same as @b{grab :set}, described below. @item @b{grab :current }@r{?}@i{window}? @@ -926,7 +926,7 @@ At any given time, the only menus available for traversal are those associated with the top-level window containing the input focus. Menu traversal is initiated by one of the following actions: -@itemize @asis{} +@itemize @asis @item [1] If is typed, then the first menu button in the list for the @@ -950,7 +950,7 @@ its first entry. Once a menu has been posted, the input focus is switched to that menu and the following actions are possible: -@itemize @asis{} +@itemize @asis @item [1] Typing or clicking mouse button 1 outside the menu button or @@ -1039,7 +1039,7 @@ options; @i{priority}@r{ defaults to }@b{interactive}. The @i{priority}@r{ arguments to the }@b{option} command are normally specified symbolically using one of the following values: -@table @asis{} +@table @asis @item @b{widgetDefault} Level 20. Used for default values hard-coded into widgets. @item @b{startupFile} @@ -1097,7 +1097,7 @@ the widget @b{.a.b.c}. Command-line switches may be abbreviated, as long as the abbreviation is unambiguous. -@table @asis{} +@table @asis @item @code{@b{:activebackground}} @flushright Name=@code{"@b{activeBackground}@r{"} Class=@code{"}@b{Foreground}"} @@ -1111,7 +1111,7 @@ will cause some action to occur. @end table -@table @asis{} +@table @asis @item @code{@b{:activeborderwidth}} @flushright Name=@code{"@b{activeBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"} @@ -1127,7 +1127,7 @@ than one element at a time (e.g. menus but not buttons). @end table -@table @asis{} +@table @asis @item @code{@b{:activeforeground}} @flushright Name=@code{"@b{activeForeground}@r{"} Class=@code{"}@b{Background}"} @@ -1139,7 +1139,7 @@ See above for definition of active elements. @end table -@table @asis{} +@table @asis @item @code{@b{:anchor}} @flushright Name=@code{"@b{anchor}@r{"} Class=@code{"}@b{Anchor}"} @@ -1155,7 +1155,7 @@ top-left corner is at the top-left corner of the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:background or :bg}} @flushright Name=@code{"@b{background}@r{"} Class=@code{"}@b{Background}"} @@ -1167,7 +1167,7 @@ widget. @end table -@table @asis{} +@table @asis @item @code{@b{:bitmap}} @flushright Name=@code{"@b{bitmap}@r{"} Class=@code{"}@b{Bitmap}"} @@ -1185,7 +1185,7 @@ a text display. @end table -@table @asis{} +@table @asis @item @code{@b{:borderwidth or :bd}} @flushright Name=@code{"@b{borderWidth}@r{"} Class=@code{"}@b{BorderWidth}"} @@ -1201,7 +1201,7 @@ The value may have any of the forms acceptable to @b{Tk_GetPixels}. @end table -@table @asis{} +@table @asis @item @code{@b{:cursor}} @flushright Name=@code{"@b{cursor}@r{"} Class=@code{"}@b{Cursor}"} @@ -1213,7 +1213,7 @@ The value may have any of the forms acceptable to @b{Tk_GetCursor}. @end table -@table @asis{} +@table @asis @item @code{@b{:cursorbackground}} @flushright Name=@code{"@b{cursorBackground}@r{"} Class=@code{"}@b{Foreground}"} @@ -1229,7 +1229,7 @@ the @b{insertBackground}@r{ option.} @end table -@table @asis{} +@table @asis @item @code{@b{:cursorborderwidth}} @flushright Name=@code{"@b{cursorBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"} @@ -1244,7 +1244,7 @@ the @b{insertBorderWidth}@r{ option.} @end table -@table @asis{} +@table @asis @item @code{@b{:cursorofftime}} @flushright Name=@code{"@b{cursorOffTime}@r{"} Class=@code{"}@b{OffTime}"} @@ -1260,7 +1260,7 @@ the @b{insertOffTime}@r{ option.} @end table -@table @asis{} +@table @asis @item @code{@b{:cursorontime}} @flushright Name=@code{"@b{cursorOnTime}@r{"} Class=@code{"}@b{OnTime}"} @@ -1274,7 +1274,7 @@ the @b{insertOnTime}@r{ option.} @end table -@table @asis{} +@table @asis @item @code{@b{:cursorwidth}} @flushright Name=@code{"@b{cursorWidth}@r{"} Class=@code{"}@b{CursorWidth}"} @@ -1292,7 +1292,7 @@ the @b{insertWidth}@r{ option.} @end table -@table @asis{} +@table @asis @item @code{@b{:disabledforeground}} @flushright Name=@code{"@b{disabledForeground}@r{"} Class=@code{"}@b{DisabledForeground}"} @@ -1307,7 +1307,7 @@ with a stippled fill pattern. @end table -@table @asis{} +@table @asis @item @code{@b{:exportselection}} @flushright Name=@code{"@b{exportSelection}@r{"} Class=@code{"}@b{ExportSelection}"} @@ -1326,7 +1326,7 @@ to export selections. @end table -@table @asis{} +@table @asis @item @code{@b{:font}} @flushright Name=@code{"@b{font}@r{"} Class=@code{"}@b{Font}"} @@ -1337,7 +1337,7 @@ Specifies the font to use when drawing text inside the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:foreground or :fg}} @flushright Name=@code{"@b{foreground}@r{"} Class=@code{"}@b{Foreground}"} @@ -1348,7 +1348,7 @@ Specifies the normal foreground color to use when displaying the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:geometry}} @flushright Name=@code{"@b{geometry}@r{"} Class=@code{"}@b{Geometry}"} @@ -1365,7 +1365,7 @@ widgets the units are usually pixels. @end table -@table @asis{} +@table @asis @item @code{@b{:insertbackground}} @flushright Name=@code{"@b{insertBackground}@r{"} Class=@code{"}@b{Foreground}"} @@ -1379,7 +1379,7 @@ cursor happens to fall in the selection). @end table -@table @asis{} +@table @asis @item @code{@b{:insertborderwidth}} @flushright Name=@code{"@b{insertBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"} @@ -1392,7 +1392,7 @@ The value may have any of the forms acceptable to @b{Tk_GetPixels}. @end table -@table @asis{} +@table @asis @item @code{@b{:insertofftime}} @flushright Name=@code{"@b{insertOffTime}@r{"} Class=@code{"}@b{OffTime}"} @@ -1406,7 +1406,7 @@ all the time. @end table -@table @asis{} +@table @asis @item @code{@b{:insertontime}} @flushright Name=@code{"@b{insertOnTime}@r{"} Class=@code{"}@b{OnTime}"} @@ -1418,7 +1418,7 @@ milliseconds the insertion cursor should remain ``on'' in each blink cycle. @end table -@table @asis{} +@table @asis @item @code{@b{:insertwidth}} @flushright Name=@code{"@b{insertWidth}@r{"} Class=@code{"}@b{InsertWidth}"} @@ -1434,7 +1434,7 @@ option. @end table -@table @asis{} +@table @asis @item @code{@b{:orient}} @flushright Name=@code{"@b{orient}@r{"} Class=@code{"}@b{Orient}"} @@ -1448,7 +1448,7 @@ or @b{vertical} or an abbreviation of one of these. @end table -@table @asis{} +@table @asis @item @code{@b{:padx}} @flushright Name=@code{"@b{padX}@r{"} Class=@code{"}@b{Pad}"} @@ -1466,7 +1466,7 @@ internal space to the left and/or right of what it displays inside. @end table -@table @asis{} +@table @asis @item @code{@b{:pady}} @flushright Name=@code{"@b{padY}@r{"} Class=@code{"}@b{Pad}"} @@ -1484,7 +1484,7 @@ internal space above and/or below what it displays inside. @end table -@table @asis{} +@table @asis @item @code{@b{:relief}} @flushright Name=@code{"@b{relief}@r{"} Class=@code{"}@b{Relief}"} @@ -1502,7 +1502,7 @@ the exterior of the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:repeatdelay}} @flushright Name=@code{"@b{repeatDelay}@r{"} Class=@code{"}@b{RepeatDelay}"} @@ -1515,7 +1515,7 @@ up- and down-arrows in scrollbars. @end table -@table @asis{} +@table @asis @item @code{@b{:repeatinterval}} @flushright Name=@code{"@b{repeatInterval}@r{"} Class=@code{"}@b{RepeatInterval}"} @@ -1528,7 +1528,7 @@ auto-repeats. @end table -@table @asis{} +@table @asis @item @code{@b{:scrollcommand}} @flushright Name=@code{"@b{scrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"} @@ -1563,7 +1563,7 @@ options. @end table -@table @asis{} +@table @asis @item @code{@b{:selectbackground}} @flushright Name=@code{"@b{selectBackground}@r{"} Class=@code{"}@b{Foreground}"} @@ -1575,7 +1575,7 @@ items. @end table -@table @asis{} +@table @asis @item @code{@b{:selectborderwidth}} @flushright Name=@code{"@b{selectBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"} @@ -1588,7 +1588,7 @@ The value may have any of the forms acceptable to @b{Tk_GetPixels}. @end table -@table @asis{} +@table @asis @item @code{@b{:selectforeground}} @flushright Name=@code{"@b{selectForeground}@r{"} Class=@code{"}@b{Background}"} @@ -1600,7 +1600,7 @@ items. @end table -@table @asis{} +@table @asis @item @code{@b{:setgrid}} @flushright Name=@code{"@b{setGrid}@r{"} Class=@code{"}@b{SetGrid}"} @@ -1623,7 +1623,7 @@ entry for more details. @end table -@table @asis{} +@table @asis @item @code{@b{:text}} @flushright Name=@code{"@b{text}@r{"} Class=@code{"}@b{Text}"} @@ -1636,7 +1636,7 @@ determined by other options, such as @b{anchor}@r{ or }@b{justify}. @end table -@table @asis{} +@table @asis @item @code{@b{:textvariable}} @flushright Name=@code{"@b{textVariable}@r{"} Class=@code{"}@b{Variable}"} @@ -1652,7 +1652,7 @@ particular widget and may be determined by other options, such as @end table -@table @asis{} +@table @asis @item @code{@b{:underline}} @flushright Name=@code{"@b{underline}@r{"} Class=@code{"}@b{Underline}"} @@ -1667,7 +1667,7 @@ on. @end table -@table @asis{} +@table @asis @item @code{@b{:xscrollcommand}} @flushright Name=@code{"@b{xScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"} @@ -1684,7 +1684,7 @@ on how this option is used. @end table -@table @asis{} +@table @asis @item @code{@b{:yscrollcommand}} @flushright Name=@code{"@b{yScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"} @@ -1768,7 +1768,7 @@ The first step in placing a child is to determine which side of the cavity it will lie against. Any one of the following options may be used to specify a side: -@table @asis{} +@table @asis @item @b{top} Position the child's parcel against the top of the cavity, occupying the full width of the cavity. @@ -1796,7 +1796,7 @@ desired width is the window's requested width. However, extra space may be requested for the window using any of the following options: -@table @asis{} +@table @asis @item @b{padx }@i{num} Add @i{num} pixels to the window's requested width before computing the parcel size as described above. @@ -1825,7 +1825,7 @@ is smaller. If the parcel is larger than the window's requested size, then the following options may be used to expand the window to partially or completely fill the parcel: -@table @asis{} +@table @asis @item @b{fill} Set the window's size to equal the parcel size. @item @b{fillx} @@ -1912,7 +1912,7 @@ packing them in order around the edges of the parent. The @b{pack} command can have any of several forms, depending on the @i{option} argument: -@table @asis{} +@table @asis @item @b{pack }@i{slave }@r{?}@i{slave ...}@r{? ?}@i{options}? If the first argument to @b{pack} is a window name (any value starting with ``.''), then the command is processed in the same @@ -1947,7 +1947,7 @@ Defaults to 0. If a slave's parcel is larger than its requested dimensions, this option may be used to stretch the slave. @i{Style} must have one of the following values: -@table @asis{} +@table @asis @item @b{none} Give the slave its requested dimensions plus any internal padding requested with @b{:ipadx}@r{ or }@b{:ipady}. This is the default. @@ -1998,7 +1998,7 @@ then any unspecified options for them retain their previous values rather than receiving default values. .RE -@table @asis{} +@table @asis @item @b{pack :forget }@i{slave }@r{?}@i{slave ...}? Removes each of the @i{slave}s from the packing order for its master and unmaps their windows. @@ -2046,7 +2046,7 @@ This area is called the @i{cavity}; for the first slave it is the entire area of the master. For each slave the packer carries out the following steps: -@itemize @asis{} +@itemize @asis @item [1] The packer allocates a rectangular @i{parcel} for the slave @@ -2185,7 +2185,7 @@ If the placer is already managing @i{window}, then the In this form the @b{place} command returns an empty string as result. The following @i{option:value} pairs are supported: -@table @asis{} +@table @asis @item @b{:in }@i{master} @i{Master} specifes the path name of the window relative to which @i{window} is to be placed. @@ -2395,7 +2395,7 @@ The first argument to @b{selection} determines the format of the rest of the arguments and the behavior of the command. The following forms are currently supported: -@table @asis{} +@table @asis @item @b{selection :clear }@i{window} If there is a selection anywhere on @i{window}'s display, clear it so that no window owns the selection anymore. Returns an empty string. @@ -2544,7 +2544,7 @@ particular window. The command can take any of a number of different forms depending on the @i{option} argument. The legal forms are: -@table @asis{} +@table @asis @item @b{tk :colormodel }@i{window}@r{ ?}@i{newValue}? If @i{newValue} isn't specified, this command returns the current color model in use for @i{window}'s screen, which will be either @@ -2631,7 +2631,7 @@ tkvars \- Variables used or set by Tk The following Tcl variables are either set or used by Tk at various times in its execution: -@table @asis{} +@table @asis @item @b{tk_library} Tk sets this variable hold the name of a directory containing a library of Tcl scripts related to Tk. These scripts include an initialization @@ -2763,7 +2763,7 @@ The @b{winfo} command is used to retrieve information about windows managed by Tk. It can take any of a number of different forms, depending on the @i{option} argument. The legal forms are: -@table @asis{} +@table @asis @item @b{winfo :atom }@i{name} Returns a decimal string giving the integer identifier for the atom whose name is @i{name}. If no atom exists with the name @@ -2964,7 +2964,7 @@ top-level window. The legal forms for the @b{wm} command are: -@table @asis{} +@table @asis @item @b{wm :aspect }@i{window}@r{ ?}@i{minNumer minDenom maxNumer maxDenom}? If @i{minNumer}@r{, }@i{minDenom}@r{, }@i{maxNumer}@r{, and }@i{maxDenom} are all specified, then they will be passed to the window manager @@ -3251,7 +3251,7 @@ a handler, then Tk handles the message by destroying the window for which it was received. .RE -@table @asis{} +@table @asis @item @b{wm :sizefrom }@i{window}@r{ ?}@i{who}? If @i{who}@r{ is specified, it must be either }@b{program} or @b{user}, or an abbreviation of one of these two. It indicates diff --git a/info/widgets.texi b/info/widgets.texi index 6032c1e3..472259eb 100644 --- a/info/widgets.texi +++ b/info/widgets.texi @@ -63,7 +63,7 @@ background disabledForeground padY @unnumberedsubsec Arguments for Button -@table @asis{} +@table @asis @item @code{@b{:command}} @flushright Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"} @@ -76,7 +76,7 @@ window. @end table -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -92,7 +92,7 @@ from the size of the bitmap or text being displayed in it. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -111,7 +111,7 @@ button presses. In this state the @b{disabledForeground} and @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -166,7 +166,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for button widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:activate} Change the button's state to @b{active} and redisplay the button using its active foreground and background colors instead of normal @@ -210,7 +210,7 @@ This command is ignored if the button's state is @b{disabled}. Tk automatically creates class bindings for buttons that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] The button activates whenever the mouse passes over it and deactivates @@ -306,7 +306,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for listbox widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -350,7 +350,7 @@ the index of the (visible) listbox element nearest to that y-coordinate. @item @i{pathName }@b{:scan}@r{ }@i{option args} This command is used to implement scanning on listboxes. It has two forms, depending on @i{option}: -@table @asis{} +@table @asis @item @i{pathName }@b{:scan :mark }@i{x y} Records @i{x}@r{ and }@i{y} and the current view in the listbox window; used in conjunction with later @b{scan dragto} commands. @@ -370,7 +370,7 @@ value is an empty string. This command is used to adjust the selection within a listbox. It has several forms, depending on @i{option}. In all of the forms the index @b{end} refers to the last element in the listbox. -@table @asis{} +@table @asis @item @i{pathName }@b{:select :adjust }@i{index} Locate the end of the selection nearest to the element given by @i{index}@r{, and adjust that end of the selection to be at }@i{index} @@ -414,7 +414,7 @@ element of the listbox. Returns an empty string. Tk automatically creates class bindings for listboxes that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] When button 1 is pressed over a listbox, the element underneath the @@ -459,7 +459,7 @@ background cursor foreground relief @unnumberedsubsec Arguments for Scale -@table @asis{} +@table @asis @item @code{@b{:command}} @flushright Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"} @@ -474,7 +474,7 @@ scale. @end table -@table @asis{} +@table @asis @item @code{@b{:from}} @flushright Name=@code{"@b{from}@r{"} Class=@code{"}@b{From}"} @@ -486,7 +486,7 @@ scale. Must be an integer. @end table -@table @asis{} +@table @asis @item @code{@b{:label}} @flushright Name=@code{"@b{label}@r{"} Class=@code{"}@b{Label}"} @@ -500,7 +500,7 @@ just above the left end of the scale. @end table -@table @asis{} +@table @asis @item @code{@b{:length}} @flushright Name=@code{"@b{length}@r{"} Class=@code{"}@b{Length}"} @@ -514,7 +514,7 @@ it is the scale's width. @end table -@table @asis{} +@table @asis @item @code{@b{:showvalue}} @flushright Name=@code{"@b{showValue}@r{"} Class=@code{"}@b{ShowValue}"} @@ -526,7 +526,7 @@ value of the scale is to be displayed. @end table -@table @asis{} +@table @asis @item @code{@b{:sliderforeground}} @flushright Name=@code{"@b{sliderForeground}@r{"} Class=@code{"}@b{sliderForeground}"} @@ -539,7 +539,7 @@ determined by the @b{activeForeground} option. @end table -@table @asis{} +@table @asis @item @code{@b{:sliderlength}} @flushright Name=@code{"@b{sliderLength}@r{"} Class=@code{"}@b{SliderLength}"} @@ -552,7 +552,7 @@ to @b{Tk_GetPixels}. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -565,7 +565,7 @@ won't activate when the mouse enters it. @end table -@table @asis{} +@table @asis @item @code{@b{:tickinterval}} @flushright Name=@code{"@b{tickInterval}@r{"} Class=@code{"}@b{TickInterval}"} @@ -578,7 +578,7 @@ as 0, then no tick-marks will be displayed. @end table -@table @asis{} +@table @asis @item @code{@b{:to}} @flushright Name=@code{"@b{to}@r{"} Class=@code{"}@b{To}"} @@ -591,7 +591,7 @@ greater than the @b{from} option. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -652,7 +652,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for scale widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -679,7 +679,7 @@ gives the new value for the scale. When a new scale is created, it is given the following initial behavior by default: -@table @asis{} +@table @asis @item @b{} Change the slider display to use @b{activeForeground} instead of @b{sliderForeground}. @@ -721,7 +721,7 @@ insertBackground insertWidth selectForeground @unnumberedsubsec Arguments for Canvas -@table @asis{} +@table @asis @item @code{@b{:closeenough}} @flushright Name=@code{"@b{closeEnough}@r{"} Class=@code{"}@b{CloseEnough}"} @@ -734,7 +734,7 @@ Defaults to 1.0. @end table -@table @asis{} +@table @asis @item @code{@b{:confine}} @flushright Name=@code{"@b{confine}@r{"} Class=@code{"}@b{Confine}"} @@ -749,7 +749,7 @@ be constrained within the scroll region. @end table -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -762,7 +762,7 @@ of the forms described in the COORDINATES section below. @end table -@table @asis{} +@table @asis @item @code{@b{:scrollincrement}} @flushright Name=@code{"@b{scrollIncrement}@r{"} Class=@code{"}@b{ScrollIncrement}"} @@ -776,7 +776,7 @@ of the forms described in the COORDINATES section below. @end table -@table @asis{} +@table @asis @item @code{@b{:scrollregion}} @flushright Name=@code{"@b{scrollRegion}@r{"} Class=@code{"}@b{ScrollRegion}"} @@ -792,7 +792,7 @@ in any of the forms given in the COORDINATES section below. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{width}"} @@ -932,7 +932,7 @@ Note that it is possible to refer to the character just after the last one in the text item; this is necessary for such tasks as inserting new text at the end of the item. -@table @asis{} +@table @asis @item @i{number} A decimal number giving the position of the desired character within the text item. @@ -977,7 +977,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following widget commands are possible for canvas widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:addtag }@i{tag searchSpec }@r{?}@i{arg arg ...}? For each item that meets the constraints specified by @i{searchSpec}@r{ and the }@i{arg}s, add @@ -990,7 +990,7 @@ This command returns an empty string as result. @i{SearchSpec}@r{ and }@i{arg}'s may take any of the following forms: -@table @asis{} +@table @asis @item @b{above }@i{tagOrId} Selects the item just after (above) the one given by @i{tagOrId} in the display list. @@ -1097,7 +1097,7 @@ If a binding is associated with the tag @b{all}, the binding will have lower priority than all other bindings associated with the item. -@table @asis{} +@table @asis @item @i{pathName }@b{:canvasx }@i{screenx}@r{ ?}@i{gridspacing}? Given a screen x-coordinate @i{screenx} this command returns the canvas x-coordinate that is displayed at that location. @@ -1194,7 +1194,7 @@ In most cases it is advisable to follow the @b{focus} widget command with the @b{focus} command to set the focus window to the canvas (if it wasn't there already). -@table @asis{} +@table @asis @item @i{pathName }@b{:gettags}@r{ }@i{tagOrId} Return a list whose elements are the tags associated with the item given by @i{tagOrId}. @@ -1278,7 +1278,7 @@ The @i{option}\-@i{value} argument pairs provide additional information to control the generation of Postscript. The following options are supported: -@table @asis{} +@table @asis @item @b{:colormap }@i{varName} @i{VarName} must be the name of a global array variable that specifies a color mapping to use in the Postscript. @@ -1407,7 +1407,7 @@ This command returns an empty string. This command is used to implement scanning on canvases. It has two forms, depending on @i{option}: -@table @asis{} +@table @asis @item @i{pathName }@b{:scan :mark }@i{x y} Records @i{x}@r{ and }@i{y} and the canvas's current view; used in conjunction with later @b{scan dragto} commands. @@ -1436,7 +1436,7 @@ these that supports indexing and the selection is used. @i{Index} gives a textual description of a position within @i{tagOrId}, as described in INDICES above. -@table @asis{} +@table @asis @item @i{pathName }@b{:select :adjust }@i{tagOrId index} Locate the end of the selection in @i{tagOrId} nearest to the character given by @i{index}, and adjust that @@ -1532,7 +1532,7 @@ by the @b{:start}@r{ and }@b{:extent} options) and displayed in one of several ways (specified by the @b{:style} option). Arcs are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create arc }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}? The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give the coordinates of two diagonally opposite corners of a @@ -1544,7 +1544,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for arcs: -@table @asis{} +@table @asis @item @b{:extent }@i{degrees} Specifies the size of the angular range occupied by the arc. The arc's range extends for @i{degrees} degrees counter-clockwise @@ -1608,7 +1608,7 @@ Items of type @b{bitmap} appear on the display as images with two colors, foreground and background. Bitmaps are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create bitmap }@i{x y }@r{?}@i{option value option value ...}? The arguments @i{x}@r{ and }@i{y} specify the coordinates of a point used to position the bitmap on the display (see the @b{:anchor} @@ -1620,7 +1620,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for bitmaps: -@table @asis{} +@table @asis @item @b{:anchor }@i{anchorPos} @i{AnchorPos} tells how to position the bitmap relative to the positioning point for the item; it may have any of the forms @@ -1656,7 +1656,7 @@ Items of type @b{line} appear on the display as one or more connected line segments or curves. Lines are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create line }@i{x1 y1... xn yn }@r{?}@i{option value option value ...}? The arguments @i{x1}@r{ through }@i{yn} give @@ -1669,7 +1669,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for lines: -@table @asis{} +@table @asis @item @b{:arrow }@i{where} Indicates whether or not arrowheads are to be drawn at one or both ends of the line. @@ -1747,7 +1747,7 @@ the display. Each oval may have an outline, a fill, or both. Ovals are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create oval }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}? The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give @@ -1764,7 +1764,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for ovals: -@table @asis{} +@table @asis @item @b{:fill }@i{color} Fill the area of the oval with @i{color}. @i{Color}@r{ may have any of the forms accepted by }@b{Tk_GetColor}. @@ -1805,7 +1805,7 @@ Items of type @b{polygon} appear as polygonal or curved filled regions on the display. Polygons are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create polygon }@i{x1 y1 ... xn yn }@r{?}@i{option value option value ...}? @@ -1820,7 +1820,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for polygons: -@table @asis{} +@table @asis @item @b{:fill }@i{color} @i{Color} specifies a color to use for filling the area of the polygon; it may have any of the forms acceptable to @b{Tk_GetColor}. @@ -1860,7 +1860,7 @@ the display. Each rectangle may have an outline, a fill, or both. Rectangles are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create rectangle }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}? The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give @@ -1874,7 +1874,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for rectangles: -@table @asis{} +@table @asis @item @b{:fill }@i{color} Fill the area of the rectangle with @i{color}, which may be specified in any of the forms accepted by @b{Tk_GetColor}. @@ -1920,7 +1920,7 @@ following text-related canvas widget commands: @b{dchars}, Text items are created with widget commands of the following form: -@table @asis{} +@table @asis @item @i{pathName }@b{:create text }@i{x y }@r{?}@i{option value option value ...}? The arguments @i{x}@r{ and }@i{y} specify the coordinates of a @@ -1933,7 +1933,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for text items: -@table @asis{} +@table @asis @item @b{:anchor }@i{anchorPos} @i{AnchorPos} tells how to position the text relative to the positioning point for the text; it may have any of the forms @@ -2010,7 +2010,7 @@ used in @b{itemconfigure} widget commands to change the item's configuration. The following options are supported for window items: -@table @asis{} +@table @asis @item @b{:anchor }@i{anchorPos} @i{AnchorPos} tells how to position the window relative to the positioning point for the item; it may have any of the forms @@ -2089,7 +2089,7 @@ activeForeground cursor foreground @unnumberedsubsec Arguments for Menu -@table @asis{} +@table @asis @item @code{@b{:postcommand}} @flushright Name=@code{"@b{postCommand}@r{"} Class=@code{"}@b{Command}"} @@ -2102,7 +2102,7 @@ widget command before posting the menu. @end table -@table @asis{} +@table @asis @item @code{@b{:selector}} @flushright Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"} @@ -2230,7 +2230,7 @@ the cascade entry, in order for menu traversal to work correctly. A cascade entry posts its associated menu by invoking a Tcl command of the form -@table @asis{} +@table @asis @item @i{menu}@b{ :post }@i{x y} @@ -2257,7 +2257,7 @@ name is @i{pathName}. This command may be used to invoke various operations on the widget. It has the following general form: -@table @asis{} +@table @asis @item @i{pathName option }@r{?}@i{arg arg ...}? @i{Option}@r{ and the }@i{arg}s determine the exact behavior of the command. @@ -2268,7 +2268,7 @@ indicator of which entry of the menu to operate on. These indicators are called @i{index}es and may be specified in any of the following forms: -@table @asis{} +@table @asis @item @i{number} Specifies the entry numerically, where 0 corresponds to the top-most entry of the menu, 1 to the entry below it, and @@ -2315,7 +2315,7 @@ is given by @i{type}@r{ and must be one of }@b{cascade}, or a unique abbreviation of one of the above. If additional arguments are present, they specify any of the following options: -@table @asis{} +@table @asis @item @b{:activebackground }@i{value} Specifies a background color to use for displaying this entry when it is active. @@ -2402,7 +2402,7 @@ causes the currently-selected entry to deselect itself. The @b{add} widget command returns an empty string. -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -2482,7 +2482,7 @@ window of the topmost pixel in the entry specified by @i{index}. Tk automatically creates class bindings for menus that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] When the mouse cursor enters a menu, the entry underneath the mouse @@ -2537,7 +2537,7 @@ borderWidth orient repeatInterval @unnumberedsubsec Arguments for Scrollbar -@table @asis{} +@table @asis @item @code{@b{:command}} @flushright Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"} @@ -2553,7 +2553,7 @@ should appear at the top of the associated window. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -2611,7 +2611,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for scrollbar widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -2659,7 +2659,7 @@ between the arrow and the slider), the slider, the bottom gap, and the bottom arrow. Pressing mouse button 1 in each area has a different effect: -@table @asis{} +@table @asis @item @b{top arrow} Causes the view in the associated window to shift up by one unit (i.e. the object appears to move down one unit in its window). @@ -2719,7 +2719,7 @@ background disabledForeground padY @unnumberedsubsec Arguments for Checkbutton -@table @asis{} +@table @asis @item @code{@b{:command}} @flushright Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"} @@ -2733,7 +2733,7 @@ be updated before the command is invoked. @end table -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -2749,7 +2749,7 @@ from the size of the bitmap or text being displayed in it. @end table -@table @asis{} +@table @asis @item @code{@b{:offvalue}} @flushright Name=@code{"@b{offValue}@r{"} Class=@code{"}@b{Value}"} @@ -2761,7 +2761,7 @@ this button is deselected. Defaults to ``0''. @end table -@table @asis{} +@table @asis @item @code{@b{:onvalue}} @flushright Name=@code{"@b{onValue}@r{"} Class=@code{"}@b{Value}"} @@ -2773,7 +2773,7 @@ this button is selected. Defaults to ``1''. @end table -@table @asis{} +@table @asis @item @code{@b{:selector}} @flushright Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"} @@ -2787,7 +2787,7 @@ drawn for the button. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -2806,7 +2806,7 @@ button presses. In this state the @b{disabledForeground} and @end table -@table @asis{} +@table @asis @item @code{@b{:variable}} @flushright Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"} @@ -2820,7 +2820,7 @@ window's path name). @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -2892,7 +2892,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for check button widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:activate} Change the check button's state to @b{active} and redisplay the button using its active foreground and background colors instead of normal @@ -2949,7 +2949,7 @@ modifying its associated variable to reflect the new state. Tk automatically creates class bindings for check buttons that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] The check button activates whenever the mouse passes over it and deactivates @@ -2998,7 +2998,7 @@ background disabledForeground padY underline @unnumberedsubsec Arguments for Menubutton -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -3014,7 +3014,7 @@ from the size of the bitmap or text being displayed in it. @end table -@table @asis{} +@table @asis @item @code{@b{:menu}} @flushright Name=@code{"@b{menu}@r{"} Class=@code{"}@b{MenuName}"} @@ -3027,7 +3027,7 @@ operation to work via the mouse. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -3046,7 +3046,7 @@ button presses. In this state the @b{disabledForeground} and @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -3109,7 +3109,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for menubutton widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:activate} Change the menu button's state to @b{active} and redisplay the menu button using its active foreground and background colors instead of normal @@ -3145,7 +3145,7 @@ use ``@i{pathName }@b{:configure :state normal}'' instead. Tk automatically creates class bindings for menu buttons that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] A menu button activates whenever the mouse passes over it and deactivates @@ -3216,7 +3216,7 @@ font insertOnTime selectBackground @unnumberedsubsec Arguments for Text -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -3228,7 +3228,7 @@ Must be at least one. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -3242,7 +3242,7 @@ in the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -3256,7 +3256,7 @@ screen units. @end table -@table @asis{} +@table @asis @item @code{@b{:wrap}} @flushright Name=@code{"@b{wrap}@r{"} Class=@code{"}@b{Wrap}"} @@ -3328,7 +3328,7 @@ but the @i{modifier}s are optional. The @i{base} for an index must have one of the following forms: -@table @asis{} +@table @asis @item @i{line}@b{.}@i{char} Indicates @i{char}@r{'th character on line }@i{line}. Lines are numbered from 1 for consistency with other UNIX programs @@ -3359,7 +3359,7 @@ If modifiers follow the base index, each one of them must have one of the forms listed below. Keywords such as @b{chars}@r{ and }@b{wordend} may be abbreviated as long as the abbreviation is unambiguous. -@table @asis{} +@table @asis @item @b{+ }@i{count}@b{ chars} Adjust the index forward by @i{count} characters, moving to later lines in the text if necessary. If there are fewer than @i{count} @@ -3443,7 +3443,7 @@ If a character has been tagged, then the display options associated with the tag override the default display style. The following options are currently supported for tags: -@table @asis{} +@table @asis @item @b{:background }@i{color} @i{Color} specifies the background color to use for characters associated with the tag. @@ -3560,7 +3560,7 @@ Text widgets support the standard X selection. Selection support is implemented via tags. If the @b{exportSelection} option for the text widget is true then the @b{sel} tag will be associated with the selection: -@itemize @asis{} +@itemize @asis @item [1] Whenever characters are tagged with @b{sel} the text widget @@ -3612,7 +3612,7 @@ the text widget's path name. @i{Option}@r{ and the }@i{arg}s determine the exact behavior of the command. The following commands are possible for text widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:compare}@r{ }@i{index1 op index2} Compares the indices given by @i{index1}@r{ and }@i{index2} according to the relational operator given by @i{op}, and returns 1 if @@ -3688,7 +3688,7 @@ This command is used to manipulate marks. The exact behavior of the command depends on the @i{option} argument that follows the @b{mark} argument. The following forms of the command are currently supported: -@table @asis{} +@table @asis @item @i{pathName }@b{:mark :names} Returns a list whose elements are the names of all the marks that are currently set. @@ -3708,7 +3708,7 @@ This command returns an empty string. @item @i{pathName }@b{:scan}@r{ }@i{option args} This command is used to implement scanning on texts. It has two forms, depending on @i{option}: -@table @asis{} +@table @asis @item @i{pathName }@b{:scan :mark }@i{y} Records @i{y} and the current view in the text window; used in conjunction with later @b{scan dragto} commands. Typically this @@ -3730,7 +3730,7 @@ command depends on the @i{option} argument that follows the @b{tag} argument. The following forms of the command are currently supported: -@table @asis{} +@table @asis @item @i{pathName }@b{:tag :add }@i{tagName index1 }@r{?}@i{index2}? Associate the tag @i{tagName} with all of the characters starting with @i{index1} and ending just before @@ -3892,7 +3892,7 @@ If the @b{:pickplace}@r{ option isn't specified then }@i{what} will appear at the top of the window. If @b{:pickplace} is specified then the widget chooses where @i{what} appears in the window: -@itemize @asis{} +@itemize @asis @item [1] If @i{what} is already visible somewhere in the window then the @@ -3920,7 +3920,7 @@ This command returns an empty string. Tk automatically creates class bindings for texts that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] Pressing mouse button 1 in an text positions the insertion cursor @@ -4021,7 +4021,7 @@ font insertOnTime selectBorderWidth @unnumberedsubsec Arguments for Entry -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -4035,7 +4035,7 @@ in the widget. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -4098,7 +4098,7 @@ Many of the widget commands for entries take one or more indices as arguments. An index specifies a particular character in the entry's string, in any of the following ways: -@table @asis{} +@table @asis @item @i{number} Specifies the character as a numerical index, where 0 corresponds to the first character in the string. @@ -4129,7 +4129,7 @@ rounded to the nearest legal value. The following commands are possible for entry widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -4162,7 +4162,7 @@ indicated by @i{index}. Returns an empty string. @item @i{pathName }@b{:scan}@r{ }@i{option args} This command is used to implement scanning on entries. It has two forms, depending on @i{option}: -@table @asis{} +@table @asis @item @i{pathName }@b{:scan :mark }@i{x} Records @i{x} and the current view in the entry window; used in conjunction with later @b{scan dragto} commands. Typically this @@ -4180,7 +4180,7 @@ value is an empty string. @item @i{pathName }@b{:select }@i{option arg} This command is used to adjust the selection within an entry. It has several forms, depending on @i{option}: -@table @asis{} +@table @asis @item @i{pathName }@b{:select :adjust }@i{index} Locate the end of the selection nearest to the character given by @i{index}@r{, and adjust that end of the selection to be at }@i{index} @@ -4217,7 +4217,7 @@ at the left edge of the window. Returns an empty string. Tk automatically creates class bindings for entries that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] Clicking mouse button 1 in an entry positions the insertion cursor @@ -4290,7 +4290,7 @@ borderWidth foreground relief width @unnumberedsubsec Arguments for Message -@table @asis{} +@table @asis @item @code{@b{:aspect}} @flushright Name=@code{"@b{aspect}@r{"} Class=@code{"}@b{Aspect}"} @@ -4309,7 +4309,7 @@ Defaults to 150. @end table -@table @asis{} +@table @asis @item @code{@b{:justify}} @flushright Name=@code{"@b{justify}@r{"} Class=@code{"}@b{Justify}"} @@ -4338,7 +4338,7 @@ in the vertical span of the window. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -4408,7 +4408,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for message widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -4456,7 +4456,7 @@ borderWidth geometry @unnumberedsubsec Arguments for Frame -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -4473,7 +4473,7 @@ all. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -4535,7 +4535,7 @@ the frame widget's path name. @i{Option}@r{ and the }@i{arg}s determine the exact behavior of the command. The following commands are possible for frame widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? }@i{?value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -4579,7 +4579,7 @@ bitmap font padY textVariable @unnumberedsubsec Arguments for Label -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -4595,7 +4595,7 @@ from the size of the bitmap or text being displayed in it. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -4644,7 +4644,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for label widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of @@ -4689,7 +4689,7 @@ background disabledForeground padX @unnumberedsubsec Arguments for Radiobutton -@table @asis{} +@table @asis @item @code{@b{:command}} @flushright Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"} @@ -4703,7 +4703,7 @@ be updated before the command is invoked. @end table -@table @asis{} +@table @asis @item @code{@b{:height}} @flushright Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"} @@ -4719,7 +4719,7 @@ from the size of the bitmap or text being displayed in it. @end table -@table @asis{} +@table @asis @item @code{@b{:selector}} @flushright Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"} @@ -4732,7 +4732,7 @@ If specified as an empty string then no selector is drawn for the button. @end table -@table @asis{} +@table @asis @item @code{@b{:state}} @flushright Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"} @@ -4751,7 +4751,7 @@ button presses. In this state the @b{disabledForeground} and @end table -@table @asis{} +@table @asis @item @code{@b{:value}} @flushright Name=@code{"@b{value}@r{"} Class=@code{"}@b{Value}"} @@ -4763,7 +4763,7 @@ this button is selected. Defaults to the name of the radio button. @end table -@table @asis{} +@table @asis @item @code{@b{:variable}} @flushright Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"} @@ -4777,7 +4777,7 @@ Defaults to the value @b{selectedButton}. @end table -@table @asis{} +@table @asis @item @code{@b{:width}} @flushright Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"} @@ -4853,7 +4853,7 @@ operations on the widget. It has the following general form: determine the exact behavior of the command. The following commands are possible for radio-button widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:activate} Change the radio button's state to @b{active} and redisplay the button using its active foreground and background colors instead of normal @@ -4908,7 +4908,7 @@ to this widget. Tk automatically creates class bindings for radio buttons that give them the following default behavior: -@itemize @asis{} +@itemize @asis @item [1] The radio button activates whenever the mouse passes over it and deactivates @@ -5008,7 +5008,7 @@ the toplevel widget's path name. @i{Option}@r{ and the }@i{arg}s determine the exact behavior of the command. The following commands are possible for toplevel widgets: -@table @asis{} +@table @asis @item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}? Query or modify the configuration options of the widget. If no @i{option} is specified, returns a list describing all of diff --git a/lsp/gcl_fpe.lsp b/lsp/gcl_fpe.lsp index 5ce1f24f..a4718ed2 100644 --- a/lsp/gcl_fpe.lsp +++ b/lsp/gcl_fpe.lsp @@ -2,11 +2,13 @@ (in-package :fpe) (import 'si::(disassemble-instruction feenableexcept fedisableexcept fld *fixnum *float *double + fetestexcept feclearexcept *fixnum *ushort *uint fun-name si-class-direct-subclasses si-class-name si-find-class +fe-list+ +mc-context-offsets+ floating-point-error function-by-address clines defentry)) (export '(break-on-floating-point-exceptions read-instruction)) +#+no-sigfpe (export '(flush-floating-point-exceptions)) (eval-when (eval compile) @@ -128,17 +130,30 @@ (feenableexcept a)) -#.`(let ((fpe-enabled 0)) +#.`(let ((fpe-enabled 0)(fpe-set 0)) + #+no-sigfpe + (defun flush-floating-point-exceptions nil + (let ((x (fetestexcept fpe-set))) + (unless (zerop x) + (feclearexcept x) + (floating-point-error x 0 0)))) (defun break-on-floating-point-exceptions - (&key suspend ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+) &aux r) + (&key suspend no-flush + ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+) + &aux r #+no-sigfpe(x (fetestexcept fpe-set))) (fe-enable - (if suspend 0 - (setq fpe-enabled - (logior - ,@(mapcar (lambda (x) - `(cond (,(car x) (push ,(intern (symbol-name (car x)) :keyword) r) ,(caddr x)) - (0))) - +fe-list+))))) + (setq fpe-set + (if suspend 0 + (setq fpe-enabled + (logior + ,@(mapcar (lambda (x) + `(cond (,(car x) + (push ,(intern (symbol-name (car x)) :keyword) r) + ,(caddr x)) + (0))) + +fe-list+)))))) + #+no-sigfpe + (unless (or no-flush (zerop x)) (floating-point-error x 0 0)) r)) (defun subclasses (class) @@ -154,13 +169,16 @@ 'arithmetic-error)) (defun floating-point-error (code addr context) - (break-on-floating-point-exceptions :suspend t) + (break-on-floating-point-exceptions :suspend t :no-flush t) (restart-case (unwind-protect (let* ((fun (function-by-address addr))(m (read-instruction addr context))) ((lambda (&rest r) (apply 'error (if (find-package :conditions) r (list (format nil "~s" r))))) (code-condition code) :operation (list :insn (pop m) :op (pop m) :fun fun :addr addr) :operands m :function-name (when fun (fun-name fun)))) - (break-on-floating-point-exceptions)) + (break-on-floating-point-exceptions :no-flush t)) (continue nil :report (lambda (s) (format s "Continue disabling floating point exception trapping")) - (apply 'break-on-floating-point-exceptions (mapcan (lambda (x) (list x nil)) (break-on-floating-point-exceptions)))))) + (apply 'break-on-floating-point-exceptions + :no-flush t + (mapcan (lambda (x) (list x nil)) + (break-on-floating-point-exceptions :no-flush t)))))) diff --git a/lsp/gcl_iolib.lsp b/lsp/gcl_iolib.lsp index 636b192f..32056ada 100644 --- a/lsp/gcl_iolib.lsp +++ b/lsp/gcl_iolib.lsp @@ -79,31 +79,31 @@ (defun concatenated-stream-streams (stream) (declare (optimize (safety 2))) (check-type stream concatenated-stream) - (c-stream-object0 stream)) + (the proper-list (c-stream-object0 stream))) (defun broadcast-stream-streams (stream) (declare (optimize (safety 2))) (check-type stream broadcast-stream) - (c-stream-object0 stream)) + (the proper-list (c-stream-object0 stream))) (defun two-way-stream-input-stream (stream) (declare (optimize (safety 2))) (check-type stream two-way-stream) - (c-stream-object0 stream)) + (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream))) (defun echo-stream-input-stream (stream) (declare (optimize (safety 2))) (check-type stream echo-stream) - (c-stream-object0 stream)) + (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream))) (defun two-way-stream-output-stream (stream) (declare (optimize (safety 2))) (check-type stream two-way-stream) - (c-stream-object1 stream)) + (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream))) (defun echo-stream-output-stream (stream) (declare (optimize (safety 2))) (check-type stream echo-stream) - (c-stream-object1 stream)) + (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream))) (defun synonym-stream-symbol (stream) (declare (optimize (safety 2))) (check-type stream synonym-stream) - (c-stream-object0 stream)) + (the symbol (c-stream-object0 stream))) (defun maybe-clear-input (&optional (x *standard-input*)) (typecase x @@ -143,7 +143,7 @@ (defun get-output-stream-string (strm) (declare (optimize (safety 1))) (check-type strm string-output-stream) - (let ((x (copy-seq (c-stream-object0 strm)))) + (let ((x (copy-seq (the string (c-stream-object0 strm))))) (c-set-stream-int strm 0) (setf (fill-pointer (c-stream-object0 strm)) 0) x)) @@ -531,6 +531,10 @@ (deftype binary-stream-element-type nil 'list) (defconstant +char-shft+ (1- (integer-length char-length))) +(declaim (inline byte-index)) +(defun byte-index (k n) + #+:clx-little-endian k #-:clx-little-endian (- n 1 k)) + (defun read-byte (s &optional (eof-error-p t) eof-value &aux (i 0)(tp (stream-element-type s))) (declare (optimize (safety 1))) (check-type s stream) @@ -538,9 +542,11 @@ (let* ((n (if tp (ash (cadr tp) (- +char-shft+)) 1))) (dotimes (k n (let ((nb (ash n +char-shft+))) (if (when (eq (car tp) 'signed-byte) (logbitp (1- nb) i)) (- i (ash 1 nb)) i))) - (setq i (logior i (ash (let ((ch (read-char s eof-error-p eof-value))) + (setq i + (logior i + (ash (let ((ch (read-char s eof-error-p eof-value))) (if (eq ch eof-value) (return ch) (char-code ch))) - (ash k +char-shft+))))))) + (ash (byte-index k n) +char-shft+))))))) (defun write-byte (j s &aux (i j) (tp (stream-element-type s))) (declare (optimize (safety 1))) @@ -549,23 +555,27 @@ (check-type tp binary-stream-element-type) (let ((n (ash (cadr tp) (- +char-shft+)))) (dotimes (k n j) - (write-char (code-char (logand i #.(1- (ash 1 char-length)))) s) - (setq i (ash i #.(- char-length)))))) + (write-char + (code-char + (logand + (ash i (ash (- (byte-index k n)) +char-shft+)) + #.(1- (ash 1 char-length)))) + s)))) #-pre-gcl (defdlfun (:fixnum "fread") :fixnum :fixnum :fixnum :fixnum) -(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil))) - #+pre-gcl - (declare (ignore seq tp start end fp)) - #-pre-gcl - (when fp - (when (eq tp (aref +array-stream-types+ (c-array-elttype seq))) - (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln))) - (when (<= start end ln) - (c+ start - (|libc|:|fread| - (c+ (c-array-self seq) (c* n start)) n (c- end start) fp))))))) +#.`(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil))) + #+pre-gcl + (declare (ignore seq tp start end fp)) + #-pre-gcl + (when fp + (when (eq tp (aref +array-stream-types+ (c-array-elttype seq))) + (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln))) + (when (<= start end ln) + (c+ start + (,(mdlsym "fread") + (c+ (c-array-self seq) (c* n start)) n (c- end start) fp))))))) @@ -592,17 +602,17 @@ #-pre-gcl (defdlfun (:fixnum "fwrite") :fixnum :fixnum :fixnum :fixnum) -(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t))) - #+pre-gcl - (declare (ignore seq tp start end fp)) - #-pre-gcl - (when fp - (when (eq tp (aref +array-stream-types+ (c-array-elttype seq))) - (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln))) - (when (<= start end ln) - (c+ start - (|libc|:|fwrite| - (c+ (c-array-self seq) (c* n start)) n (c- end start) fp))))))) +#.`(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t))) + #+pre-gcl + (declare (ignore seq tp start end fp)) + #-pre-gcl + (when fp + (when (eq tp (aref +array-stream-types+ (c-array-elttype seq))) + (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln))) + (when (<= start end ln) + (c+ start + (,(mdlsym "fwrite") + (c+ (c-array-self seq) (c* n start)) n (c- end start) fp))))))) (defun write-sequence (seq strm &key (start 0) end diff --git a/o/alloc.c b/o/alloc.c index 9b252ac6..743b6552 100644 --- a/o/alloc.c +++ b/o/alloc.c @@ -1290,7 +1290,31 @@ gcl_init_alloc(void *cs_start) { #ifdef HAVE_MPROTECT if (data_start) - massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE|PROT_EXEC)); + massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE +#ifndef W_X + |PROT_EXEC +#endif + )); + +#ifdef W_X + { + struct pageinfo *v; + struct typemanager *tm=tm_of(t_cfdata); + + + for (v=cell_list_head;v;v=v->next) + if (tm->tm_type==v->type) { + void *p; + ufixnum k; + for (p=pagetochar(page(v)),k=0;ktm_nppage;k++,p+=tm->tm_size) { + object o=p; + if (!is_free(o) && type_of(o)==t_cfdata && (void *)o->cfd.cfd_start>=data_start) + gcl_mprotect((void *)o->cfd.cfd_start,o->cfd.cfd_nexp<d.tt=1; memory->cfd.cfd_name=ltn; memory->cfd.cfd_start=(char *)fn; faslfile=open_stream(ltn,smm_input,Cnil,sKerror); diff --git a/o/file.d b/o/file.d index 5fbfdfeb..d48aff90 100644 --- a/o/file.d +++ b/o/file.d @@ -1900,7 +1900,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,SI,7,7,NONE,OO,OO,OO,OO, massert(!sigaction(SIGCHLD,&sa,&osa)); - switch((pid=pvfork())) { + switch((pid=pfork())) { case -1: FEerror("Cannot fork", 0); break; @@ -1909,7 +1909,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,SI,7,7,NONE,OO,OO,OO,OO, massert(setsid()>=0); if (daemon == sKpersistent) - switch(pvfork()) { + switch(pfork()) { case -1: FEerror("daemon fork error", 0); break; @@ -1952,7 +1952,7 @@ DEFUN("SOCKET-INT",object,fSsocket_int,SI,7,7,NONE,OO,OO,OO,OO, y=maccept(x); - switch((pid=pvfork())) { + switch((pid=pfork())) { case 0: massert(!sigaction(SIGCHLD,&osa,NULL)); ifuncall1(server,y); diff --git a/o/gbc.c b/o/gbc.c index 2b710246..94761c66 100644 --- a/o/gbc.c +++ b/o/gbc.c @@ -31,6 +31,7 @@ #define NEED_MP_H #include #include +#include #include "include.h" #include "page.h" @@ -957,6 +958,11 @@ sweep_phase(void) { continue; } +#ifdef W_X + if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x)) + gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))]; + h^=ihash_equal(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))]; x = x->c.c_cdr; goto BEGIN; break; @@ -249,7 +249,7 @@ BEGIN: if (depth++ <=3) switch ((tx=type_of(x))) { case t_cons: - h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))]; + h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))]; x = x->c.c_cdr; goto BEGIN; break; diff --git a/o/main.c b/o/main.c index 799b8fbe..3b14a455 100644 --- a/o/main.c +++ b/o/main.c @@ -178,7 +178,65 @@ mbrk(void *v) { return uc==(ufixnum)sbrk(uv-uc) ? 0 : -1; } - + +#if defined(__CYGWIN__)||defined(__MINGW32__) + +#include + +static ufixnum +get_phys_pages_no_malloc(char n,char ramp) { + + MEMORYSTATUS m; + + m.dwLength=sizeof(m); + GlobalMemoryStatus(&m); + return m.dwTotalPhys>>PAGEWIDTH; + +} + +#elif defined (DARWIN) + +#include + +static ufixnum +get_phys_pages_no_malloc(char n,char ramp) { + + uint64_t s; + size_t z=sizeof(s); + int m[2]={CTL_HW,HW_MEMSIZE}; + + if (sysctl(m,2,&s,&z,NULL,0)==0) + return s>>PAGEWIDTH; + + return 0; + +} + +#elif defined(__sun__) + +static ufixnum +get_phys_pages_no_malloc(char n,char ramp) { + + return sysconf(_SC_PHYS_PAGES); + +} + +#elif defined(FREEBSD) + +#include +#include + +static ufixnum +get_phys_pages_no_malloc(char n,char ramp) { + + size_t i,len=sizeof(i); + + return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH; + +} + +#else /*Linux*/ + static char * next_line(int l,ufixnum *s) { @@ -240,65 +298,6 @@ parse_proc_meminfo(ufixnum *t,ufixnum *f,ufixnum *st,ufixnum *sf) { } - -#if defined(__CYGWIN__)||defined(__MINGW32__) - -#include - -static ufixnum -get_phys_pages_no_malloc(char n,char ramp) { - - MEMORYSTATUS m; - - m.dwLength=sizeof(m); - GlobalMemoryStatus(&m); - return m.dwTotalPhys>>PAGEWIDTH; - -} - -#elif defined (DARWIN) - -#include - -static ufixnum -get_phys_pages_no_malloc(char n,char ramp) { - - uint64_t s; - size_t z=sizeof(s); - int m[2]={CTL_HW,HW_MEMSIZE}; - - if (sysctl(m,2,&s,&z,NULL,0)==0) - return s>>PAGEWIDTH; - - return 0; - -} - -#elif defined(__sun__) - -static ufixnum -get_phys_pages_no_malloc(char n,char ramp) { - - return sysconf(_SC_PHYS_PAGES); - -} - -#elif defined(FREEBSD) - -#include -#include - -static ufixnum -get_phys_pages_no_malloc(char n,char ramp) { - - size_t i,len=sizeof(i); - - return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH; - -} - -#else /*Linux*/ - static ufixnum get_phys_pages_no_malloc(char freep,char ramp) { @@ -446,6 +445,13 @@ set_real_maxpage(void *beg) { mp=ufmin(mp,get_phys_pages1(0,0)); +#if defined(__APPLE__) && defined(__aarch64__) + { + extern unsigned long heap_vmsize; + mp=ufmin(mp,heap_vmsize>>PAGEWIDTH); + } +#endif + sz=ufmin(mem_bound,log_maxpage_bound); sz=(1UL< +#include +#include + +#ifdef __APPLE__ +#include +#define environ (*_NSGetEnviron()) +#else +extern char **environ; +#endif + static void spawn_process_with_streams(object istream,object ostream,char *pname,char **argv) { - int fdin; - int fdout; + int fdin,fdout,spawn_err; + pid_t pid; + posix_spawn_file_actions_t actions; - if (istream->sm.sm_fp == NULL || ostream->sm.sm_fp == NULL) - FEerror("Cannot spawn process with given stream", 0); + massert(istream->sm.sm_fp&&ostream->sm.sm_fp); fdin = istream->sm.sm_int; fdout = ostream->sm.sm_int; - if (!pvfork()) { + massert(!posix_spawn_file_actions_init(&actions)); + massert(!posix_spawn_file_actions_adddup2(&actions,fdin,0)); + massert(!posix_spawn_file_actions_adddup2(&actions,fdout,1)); - /* the child --- replace standard in and out with descriptors given */ - close(0); - massert(dup(fdin)>=0); - close(1); - massert(dup(fdout)>=0); + massert(!posix_spawn_file_actions_addclose(&actions,fileno(istream->sm.sm_fp))); + massert(!posix_spawn_file_actions_addclose(&actions,fileno(ostream->sm.sm_fp))); - close(fileno(istream->sm.sm_fp)); - close(fileno(ostream->sm.sm_fp)); + spawn_err = posix_spawnp(&pid, pname, &actions, NULL, argv, environ); - errno=0; - execvp(pname,argv); - _exit(128|(errno&0x7f)); + posix_spawn_file_actions_destroy(&actions); - } else { - - close(fdin); - close(fdout); - - } + massert(!spawn_err); + massert(!close(fdin)); + massert(!close(fdout)); } - - + void run_process(char *filename,char **argv) { diff --git a/o/sfasli.c b/o/sfasli.c index 23f9fb8e..cbd84829 100644 --- a/o/sfasli.c +++ b/o/sfasli.c @@ -129,6 +129,7 @@ LFD(build_symbol_table)(void) { min_text=pflags&SECTION_TYPE;\ - _fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS;}) + (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && !(sec->flags&S_ATTR_DEBUG);}) #define LOAD_SEC(sec) ({ul _fl=sec->flags&SECTION_TYPE;\ - (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL;}) + (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL && !(sec->flags&S_ATTR_DEBUG);}) #define MASK(n) (~(~0ULL << (n))) @@ -44,10 +44,8 @@ typedef unsigned long ul; STATIC_RELOC_VARS #endif - - static int -ovchk(ul v,ul m) { +ovchks(ul v,ul m) { m|=m>>1; v&=m; @@ -56,16 +54,56 @@ ovchk(ul v,ul m) { } +static int +ovchku(ul v,ul m) { + + return !(v&=m); + +} + static int store_val(ul *w,ul m,ul v) { - massert(ovchk(v,~m)); *w=(v&m)|(*w&~m); return 0; } +static int +store_valu(ul *w,ul m,ul v) { + + massert(ovchku(v,~m)); + return store_val(w,m,v); + + return 0; + +} + +static int +store_vals(ul *w,ul m,ul v) { + + massert(ovchks(v,~m)); + return store_val(w,m,v); + +} + +#ifdef W_X +static int +add_vals(ul *w,ul m,ul v) { + + return store_vals(w,m,v+(*w&m)); + +} + +static int +add_valu(ul *w,ul m,ul v) { + + return store_valu(w,m,v+(*w&m)); + +} +#endif + #ifndef _LP64 /*redirect trampolines gcc-4.0 gives no reloc for stub sections on x86 only*/ static int @@ -102,13 +140,16 @@ relocate(struct relocation_info *ri,struct section *sec, struct scattered_relocation_info *sri=(void *)ri; ul *q=(void *)(sec->addr+(sri->r_scattered ? sri->r_address : ri->r_address)); ul a,rel=(ul)(q+1); +#ifdef W_X + static ul addend; +#endif if (sri->r_scattered) a=sri->r_value; else if (ri->r_extern) a=n1[ri->r_symbolnum].n_value; else - a=start; + a=ri->r_symbolnum; switch(sri->r_scattered ? sri->r_type : ri->r_type) { @@ -125,7 +166,7 @@ relocate(struct relocation_info *ri,struct section *sec, } static int -relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start) { +relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start,struct section *sec1) { struct nlist *n; struct node *nd; @@ -133,7 +174,7 @@ relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start) { for (n=n1;nn_sect) - n->n_value+=start; + n->n_value+=start+sec1[n->n_sect-1].reserved3; else if ((nd=find_sym_ptable(st1+n->n_un.n_strx))) n->n_value=nd->address; else if (n->n_type&(N_PEXT|N_EXT)) @@ -163,12 +204,37 @@ static object load_memory(struct section *sec1,struct section *sece,void *v1, ul *p,ul **got,ul **gote,ul *start) { - ul sz,gsz,sa,ma,a,fl; + ul sz,gsz,ma,a,fl; + volatile ul sa; struct section *sec; object memory; +#ifdef W_X + ul text_pbits; +#endif BEGIN_NO_INTERRUPT; + for (sec=sec1;secreserved3=0;/*FIXME unneeded?*/ + + gsz=**got ? (**got+1)*sizeof(**got)-1 : 0; + +#ifdef W_X + + massert(sece>sec1); + massert(ALLOC_SEC(sec1)); + massert(sec1->flags&(S_ATTR_SOME_INSTRUCTIONS|S_ATTR_PURE_INSTRUCTIONS)); + massert(!sec1->addr); + for (sec=sec1+1,sa=-1;secsec->addr) + sa=sec->addr; + text_pbits=(sa+gsz+PAGESIZE-1)>>PAGEWIDTH; + sa=(text_pbits<addr+=(sec->reserved3=sa); + +#endif + for (*p=sz=ma=0,sa=-1,sec=sec1;secsizeof(struct contblock) ? ma-1 : 0; sz+=ma; - gsz=0; - if (**got) { - gsz=(**got+1)*sizeof(**got)-1; - sz+=gsz; - } - + sz+=gsz; + memory=new_cfdata(); - memory->cfd.cfd_size=sz; + memory->cfd.cfd_size=sz; +#ifdef W_X + memory->cfd.cfd_start=alloc_code_space(sz+PAGESIZE-sizeof(struct contblock),-1UL); + memory->cfd.cfd_start=(void *)(((ul)memory->cfd.cfd_start+(PAGESIZE-1))&~(PAGESIZE-1)); + memory->cfd.cfd_nexp=text_pbits; +#else memory->cfd.cfd_start=alloc_code_space(sz,-1UL); +#endif a=(ul)memory->cfd.cfd_start; a=(a+ma)&~ma; for (sec=sec1;secaddr+=a; + sec->addr+=a; if (LOAD_SEC(sec)) memcpy((void *)sec->addr,v1+sec->offset,sec->size); else @@ -213,7 +281,11 @@ load_memory(struct section *sec1,struct section *sece,void *v1, if (**got) { sz=**got; +#ifdef W_X + *got=(void *)memory->cfd.cfd_start+(text_pbits<cfd.cfd_start+memory->cfd.cfd_size-gsz; +#endif gsz=sizeof(**got)-1; *got=(void *)(((ul)*got+gsz)&~gsz); *gote=*got+sz; @@ -487,11 +559,14 @@ seek_to_end_ofile(FILE *f) { #ifndef GOT_RELOC #define GOT_RELOC(a) 0 #endif +#ifndef GOT_RELOC_EXTRA +#define GOT_RELOC_EXTRA(a) 0 +#endif static int label_got_symbols(void *v1,struct section *sec,struct nlist *n1,struct nlist *ne,ul *gs) { - struct relocation_info *ri,*re; + struct relocation_info *ri,*re;/*scattered?*/ struct nlist *n; *gs=0; @@ -504,8 +579,10 @@ label_got_symbols(void *v1,struct section *sec,struct nlist *n1,struct nlist *ne massert(ri->r_extern); n=n1+ri->r_symbolnum; - if (!n->n_desc) + if (!n->n_desc) { n->n_desc=++*gs; + (*gs)+=GOT_RELOC_EXTRA(ri); + } } @@ -516,13 +593,20 @@ label_got_symbols(void *v1,struct section *sec,struct nlist *n1,struct nlist *ne static int clear_protect_memory(object memory) { +#ifndef W_X + void *p,*pe; p=(void *)((unsigned long)memory->cfd.cfd_start & ~(PAGESIZE-1)); pe=(void *)((unsigned long)(memory->cfd.cfd_start+memory->cfd.cfd_size + PAGESIZE-1) & ~(PAGESIZE-1)); - return gcl_mprotect(p,pe-p,PROT_READ|PROT_WRITE|PROT_EXEC); +#else + + return gcl_mprotect((void *)memory->cfd.cfd_start,memory->cfd.cfd_nexp<cfd.cfd_start,(void *)memory->cfd.cfd_start+memory->cfd.cfd_size); +#elif defined(CLEAR_CACHE) CLEAR_CACHE; #endif massert(!un_mmap(v1,ve)); if(symbol_value(sLAload_verboseA)!=Cnil) { - printf(";; start address for %.*s %p\n", - (int)VLEN(memory->cfd.cfd_name),memory->cfd.cfd_name->st.st_self, - memory->cfd.cfd_start); + coerce_to_filename(memory->cfd.cfd_name,FN1); + printf(";; start address for %s %p\n",FN1,memory->cfd.cfd_start); fflush(stdout); } diff --git a/o/sgbc.c b/o/sgbc.c index 428730d3..cbe2b89d 100644 --- a/o/sgbc.c +++ b/o/sgbc.c @@ -191,6 +191,11 @@ sgc_sweep_phase(void) { if (TYPEWORD_TYPE_P(v->type) && x->d.s == SGC_NORMAL) continue; #endif + +#ifdef W_X + if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x)) + gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<cmdsize; } +static void +copy_linkedit (struct load_command *lc, long delta) { + + struct linkedit_data_command *ldc=(struct linkedit_data_command *)lc; + + ldc->dataoff+=delta; + copy_other ((void *)ldc); + +} + +typedef struct { + uint32_t magic; /* 0xfade0cc0 */ + uint32_t length; /* Total length of SuperBlob */ + uint32_t count; /* Number of sub-blobs (usually 1 or 2) */ +} CS_SuperBlob; + +typedef struct { + uint32_t type; /* 0 for CodeDirectory, 5 for Entitlements */ + uint32_t offset; /* Offset from start of SuperBlob */ +} CS_BlobIndex; + +typedef struct { + uint32_t magic; /* 0xfade0c02 */ + uint32_t length; /* Length of this blob */ + uint32_t version; /* 0x20400 for ARM64 compatibility */ + uint32_t flags; /* Ad-hoc is usually 0 or 0x2 (adhoc) */ + uint32_t hashOffset; /* Offset to the hashes from start of this blob */ + uint32_t identOffset; /* Offset to the identifier string */ + uint32_t nSpecialSlots; /* Number of special slots (usually 0 for ad-hoc) */ + uint32_t nCodeSlots; /* Number of 4K pages in the file */ + uint32_t codeLimit; /* Total size of file being signed */ + uint8_t hashSize; /* 32 for SHA-256 */ + uint8_t hashType; /* 2 for SHA-256 */ + uint8_t platform; /* 0 */ + uint8_t pageSize; /* 12 (means 2^12 = 4096) */ + uint32_t spare2; /* 0 */ + /* Version 0x20400 adds: */ + uint32_t scatterOffset; /* 0 */ + uint32_t teamOffset; /* 0 or offset to Team ID string */ + uint32_t spare3; /* 0 */ + uint64_t codeLimit64; /* 0 (unless file > 4GB) */ + uint64_t execSegBase; /* File offset of the __TEXT segment */ + uint64_t execSegLimit; /* Size of the __TEXT segment */ + uint64_t execSegFlags; /* Flags (CS_EXECSEG_*) */ +} CS_CodeDirectory; + +typedef struct { + uint32_t magic; /* 0xfade0c01 (Requirements Set) */ + uint32_t length; /* Total length of this blob (usually 12 for empty sets) */ + uint32_t count; /* Number of Requirements in this set (0 for ad-hoc) */ + /* Requirement Index entries follow if count > 0 */ +} CS_Requirements; + +typedef struct { + uint32_t magic; /* 0xfade0b01 (CSMAGIC_BLOBWRAPPER) */ + uint32_t length; /* Total length of header + CMS data */ +} CS_BlobWrapper; + +#include +/*void calculate_page_hash(const void *data, size_t len, uint8_t *out_hash) {*/ + +#define uassert(a_) \ + ({errno=0; \ + if (!(a_)) { \ + emsg("The assertion %s on line %d of %s in function %s failed: %s", \ + #a_,__LINE__,__FILE__,__FUNCTION__,strerror(errno)); \ + do_gcl_abort(); \ + };}) +#define mwrite(a,b) uassert(write(outfd,(a),(b))==(b)); +#define mpwrite(a,b,c) uassert(pwrite(outfd,(a),(b),(c))==(b)); +#define mpred(a,b,c) uassert(pread(outfd,(a),(b),(c))==(b)) +#define RNDUP(x,y) (((x)+(y)-1)&~((y)-1)) + +int +dump_code_signature(struct segment_command *le_seg, + struct segment_command *tx_seg, + unsigned long le_ho,int csf) { + + struct linkedit_data_command ldc={LC_CODE_SIGNATURE,16,0,0}; + CS_SuperBlob sb; + CS_BlobIndex bi[3]; + CS_CodeDirectory cd; + CS_Requirements rq; + CS_BlobWrapper cms; + const char *id="GCL"; + const long nss=2,ss=32,id_len=RNDUP(strlen(id)+1,8); + long cd_len,len,np,i; + uint8_t hash[32],data[PAGESIZE]; + void *v; + + + lseek(outfd,0,SEEK_END); + len=lseek(outfd,0,SEEK_CUR); + if (len%16) { + unsigned long x=0; + mwrite(&x,sizeof(x)); + len=lseek(outfd,0,SEEK_CUR); + } + ldc.dataoff=len; + + np=RNDUP(len,PAGESIZE)>>PAGEWIDTH; + cd_len=sizeof(cd)+id_len+(nss+np)*ss; + ldc.datasize=sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms); + + mpwrite(&ldc,sizeof(ldc),curr_header_offset); + curr_header_offset+=ldc.cmdsize; + + le_seg->filesize+=ldc.datasize; + le_seg->vmsize+=RNDUP(ldc.datasize,PAGESIZE); + mpwrite(le_seg,sizeof(*le_seg),le_ho); + + uassert(curr_header_offset<=text_seg_lowest_offset); + +#if VERBOSE + printf ("%ld unused bytes follow Mach-O header\n", + text_seg_lowest_offset - curr_header_offset); +#endif + + mh.sizeofcmds=curr_header_offset-sizeof(mh); + mh.ncmds+=(1-csf); + mpwrite(&mh,sizeof(mh),0); + + sb.magic=htonl(0xfade0cc0); + sb.length=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms)); + sb.count=htonl(sizeof(bi)/sizeof(*bi)); + mwrite(&sb,sizeof(sb)); + + bi[0].type=htonl(0); + bi[0].offset=htonl(sizeof(sb)+sizeof(bi)); + bi[1].type=htonl(2); + bi[1].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len); + bi[2].type=htonl(0x10000); + bi[2].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)); + mwrite(&bi,sizeof(bi)); + + cd.magic=htonl(0xfade0c02); + cd.length=htonl(cd_len); + cd.version=htonl(0x20400); + cd.flags=htonl(2); + cd.hashOffset=htonl(cd_len-np*ss); + cd.identOffset=htonl(sizeof(cd)); + cd.nSpecialSlots=htonl(nss); + cd.nCodeSlots=htonl(np); + cd.codeLimit=htonl(len<0x100000000 ? len : 0); + cd.hashSize=32; + cd.hashType=2; + cd.platform=0; + cd.pageSize=PAGEWIDTH; + cd.spare2=0; + cd.scatterOffset=htonl(0); + cd.teamOffset=htonl(0); + cd.spare3=htonl(0); + cd.codeLimit64=htonll(len>=0x100000000 ? len : 0); + cd.execSegBase=htonll(tx_seg->fileoff); + cd.execSegLimit=htonll(tx_seg->filesize); + cd.execSegFlags=htonll(1); + mwrite(&cd,sizeof(cd)); + + uassert(v=alloca(id_len)); + uassert(memset(v,0,id_len)); + uassert(strcpy(v,id)); + mwrite(v,id_len); + + rq.magic=htonl(0xfade0c01); + rq.length=htonl(12); + rq.count=htonl(0); + CC_SHA256(&rq,sizeof(rq),hash); + mwrite(hash,sizeof(hash)); + + uassert(memset(hash,0,sizeof(hash))); + mwrite(hash,sizeof(hash)); + + for (i=0;icmd) { + case LC_SEGMENT: + if (strncmp (((struct segment_command *) lca[i])->segname, SEG_LINKEDIT, 16) == 0) { + linkedit_vmsize=((struct segment_command *) lca[i])->vmsize; + le_seg=(struct segment_command *)lca[i]; + } else if (strncmp (((struct segment_command *) lca[i])->segname, SEG_TEXT, 16) == 0) { + text_vmaddr=((struct segment_command *) lca[i])->vmaddr; + tx_seg=(struct segment_command *)lca[i]; + } + } + uassert(le_seg&&tx_seg); for (i = 0; i < nlc; i++) switch (lca[i]->cmd) { @@ -844,10 +1048,18 @@ dump_it () { extern char *data_start; struct section *sectp = (struct section *) (scp + 1); unsigned long header_offset=curr_header_offset + sizeof (struct segment_command); + extern int in_pre_gcl;/*support libboot.so*/ + unsigned long heap_vmsize= \ + (in_pre_gcl ? SAVED_PRE_IMAGE_SPAN : SAVED_IMAGE_SPAN) - \ + (long)((long)data_start-text_vmaddr) - \ + linkedit_vmsize; + + if (core_end-data_start>heap_vmsize) + unexec_error ("data exceeds __HEAP vmsize"); scp->vmaddr=(long)data_start; - linkedit_vmdelta=(1UL<<37)-scp->vmsize; - scp->vmsize=(1UL<<37); + linkedit_vmdelta=heap_vmsize-scp->vmsize; + scp->vmsize=heap_vmsize; scp->fileoff=curr_file_offset; scp->filesize=core_end-data_start; scp->maxprot=VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE; @@ -858,6 +1070,7 @@ dump_it () { sectp->addr=scp->vmaddr; sectp->size=scp->filesize; sectp->flags=S_REGULAR; + sectp->offset=scp->fileoff; if (!unexec_write (header_offset, sectp, sizeof (struct section))) unexec_error ("cannot write section _HEAP's header"); @@ -876,6 +1089,7 @@ dump_it () { unexec_error ("cannot handle multiple LINKEDIT segments in input file"); linkedit_delta = curr_file_offset - scp->fileoff; scp->vmaddr+=linkedit_vmdelta; + le_ho=curr_header_offset; copy_segment (lca[i]); } else copy_segment (lca[i]); @@ -896,22 +1110,20 @@ dump_it () { copy_dyld_info (lca[i], linkedit_delta); break; #endif + case LC_CODE_SIGNATURE: + csf=1; + break; + case LC_DATA_IN_CODE: + case LC_FUNCTION_STARTS: + case LC_DYLD_EXPORTS_TRIE: + copy_linkedit(lca[i],linkedit_delta);/*FIXME*/ + break; default: copy_other (lca[i]); break; } - - if (curr_header_offset > text_seg_lowest_offset) - unexec_error ("not enough room for load commands for new __DATA segments"); - -#if VERBOSE - printf ("%ld unused bytes follow Mach-O header\n", - text_seg_lowest_offset - curr_header_offset); -#endif - - mh.sizeofcmds = curr_header_offset - sizeof (struct mach_header); - if (!unexec_write (0, &mh, sizeof (struct mach_header))) - unexec_error ("cannot write final header contents"); + + dump_code_signature(le_seg,tx_seg,le_ho,csf); } @@ -1014,7 +1226,7 @@ unexec (char *outfile, char *infile, void *start_data, void *start_bss, if ((infd = open (infile, O_RDONLY, 0)) < 0) unexec_error ("cannot open input file `%s'", infile); - if ((outfd = open (outfile, O_WRONLY | O_TRUNC | O_CREAT, 0755)) < 0) { + if ((outfd = open (outfile, O_RDWR | O_TRUNC | O_CREAT, 0755)) < 0) { close (infd); unexec_error ("cannot open output file `%s'", outfile); } @@ -1042,7 +1254,7 @@ static size_t stub_size (malloc_zone_t *zone, const void *ptr) #ifdef HAVE_MALLOC_ZONE_MEMALIGN static void * -stub_memalign(size_t boundary, size_t size) { +stub_memalign(malloc_zone_t *zone,size_t boundary, size_t size) { extern void *my_malloc (size_t); void *v=my_malloc(size+boundary-1); diff --git a/o/unixsys.c b/o/unixsys.c index 789341cf..1a01c22e 100644 --- a/o/unixsys.c +++ b/o/unixsys.c @@ -41,7 +41,7 @@ vsystem(char *command) { char *c; const char *x1[]={"/bin/sh","-c",NULL,NULL},*spc=" \n\t",**p1,**pp,**pe; int s; - pid_t pid; + pid_t pid,pid1; posix_spawnattr_t attr; posix_spawn_file_actions_t file_actions; extern char **environ; @@ -68,7 +68,9 @@ vsystem(char *command) { massert(!posix_spawn_file_actions_destroy(&file_actions)); massert(pid>0); - massert(pid==waitpid(pid,&s,0)); + + for (;(pid1=waitpid(pid,&s,0))!=pid && errno==EINTR;); + massert(pid==pid1); if ((s>>8)&128) emsg("execvp failure when executing '%s': %s\n",command,strerror((s>>8)&0x7f)); diff --git a/o/usig.c b/o/usig.c index a9603973..19fb83d3 100644 --- a/o/usig.c +++ b/o/usig.c @@ -173,6 +173,18 @@ DEFUN("FEENABLEEXCEPT",object,fSfeenableexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x } +DEFUN("FETESTEXCEPT",object,fSfetestexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") { + + RETURN1((object)(long)fetestexcept(x)); + +} + +DEFUN("FECLEAREXCEPT",object,fSfeclearexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") { + + RETURN1((object)(long)feclearexcept(x)); + +} + DEFUN("FEDISABLEEXCEPT",object,fSfedisableexcept,SI,0,0,NONE,IO,OO,OO,OO,(void),"") { fixnum x=0; diff --git a/o/xdrfuns.c b/o/xdrfuns.c index 0287c0ad..248bdbf5 100644 --- a/o/xdrfuns.c +++ b/o/xdrfuns.c @@ -163,6 +163,9 @@ DEFUN("XDR-READ",object,fSxdr_read,SI,2,2,NONE,OO,OO,OO,OO,(object str,object el return elt; break; default: + {short s; + xdr_short(xdrp,&s); + }/*ensure stub*/ FEerror("unsupported xdr ~a",1,elt); return elt; break; diff --git a/pcl/gcl_pcl_dfun.lisp b/pcl/gcl_pcl_dfun.lisp index dd43bb6e..35e61a1d 100644 --- a/pcl/gcl_pcl_dfun.lisp +++ b/pcl/gcl_pcl_dfun.lisp @@ -1345,14 +1345,17 @@ And so, we are saved. (t t))) (defun class-applicable-using-class-p (specl type) - (let ((pred (memq specl (if (eq *boot-state* 'complete) + (let* ((pred (memq specl (if (eq *boot-state* 'complete) (class-precedence-list type) - (early-class-precedence-list type))))) + (early-class-precedence-list type)))) + ;FIXME C compiler bug workaround ignored variadic decl macosx arm + (scp (unless (or pred *in-precompute-effective-methods-p*) + (superclasses-compatible-p specl type)))) (values pred (or pred (if (not *in-precompute-effective-methods-p*) ;; classes might get common subclass - (superclasses-compatible-p specl type) + scp ;; worry only about existing classes (classes-have-common-subclass-p specl type)))))) -- 2.30.2